У меня есть следующий метод:
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;
}
Спасибо всем, что нашли время ответить на мой вопрос!