我有以下方法:子串難度C#
public static string PrepareNumberForInserting(string pNumber)
{
if (pNumber.Length > 7)
{
if (pNumber.Length == 8 && pNumber.Substring(0, 1) == "7")
{
pNumber = pNumber.Substring(1, 8);
}
if (pNumber.Length == 9 && pNumber.Substring(0, 2) == "07")
{
pNumber = pNumber.Substring(2, 9);
}
if (pNumber.Length == 11 && pNumber.Substring(0, 4) == "3897")
{
pNumber = pNumber.Substring(4, 11);
}
if (pNumber.Length == 12 && pNumber.Substring(0, 5) == "38907")
{
pNumber = pNumber.Substring(5, 12);
}
}
else
{
pNumber = string.Format("3897{0}", pNumber);
}
return pNumber;
}
,無論什麼格式的用戶輸入他的號碼(可以是070300067,70300067,xxx70300067),我想提取的最後7個字符,並與它們添加前綴3897.如果我輸入除7xxxxxx之外的任何內容,則會得到異常詳細信息:System.ArgumentOutOfRangeException:索引和長度必須引用字符串中的某個位置。
有什麼想法?非常感謝你!
編輯:
我解決了我以下列方式問題:
public static string PrepareNumberForInserting(string pNumber)
{
if (pNumber.Length > 7)
{
if (pNumber.Length == 8 && pNumber.StartsWith("7"))
{
pNumber = pNumber.Substring(1);
}
if (pNumber.Length == 9 && pNumber.StartsWith("07"))
{
pNumber = pNumber.Substring(2);
}
if (pNumber.Length == 11 && pNumber.StartsWith("3897"))
{
pNumber = pNumber.Substring(4);
}
if (pNumber.Length == 12 && pNumber.StartsWith("38907"))
{
pNumber = pNumber.Substring(5);
}
}
pNumber = string.Format("3897{0}", pNumber);
return pNumber;
}
感謝大家抽出時間來回答我的問題!
我會給個提示。而不是從字符串的左到右,嘗試另一種方式,並使用子字符串提取最後7個字符並替換它們。如果您仍然遇到困難,我會提供代碼。不過,請先嚐試一下。 – Sid
我會將你的參數重命名爲'phoneNumber'或類似的東西。乍一看,我讀了'pNumber'作爲指向數字的指針。 – CodesInChaos