После прочтения ответов на подобные вопросы я придумал следующий подход к проблеме проверки содержимого текстового поля для числа.Цитирование через строку, содержащую только цифры и десятичные точки
Мой вопрос сейчас: Мое решение так просто, как может быть?
internal static string testStringForNumber(string v)
{
// example: string strToTest = Data.CommonMethods.testStringForNumber(this.amountTextBox.Text.Trim());
string returnValue = "";
string chr = "";
int nLen = v.Length;
int i = 0; // this is my counter
while (i < nLen)
{
chr = v.Substring(i, 1);
switch (chr)
{
case ".":
returnValue = returnValue + chr;
break;
case "0":
returnValue = returnValue + chr;
break;
case "9":
returnValue = returnValue + chr;
break;
case "8":
returnValue = returnValue + chr;
break;
case "7":
returnValue = returnValue + chr;
break;
case "6":
returnValue = returnValue + chr;
break;
case "5":
returnValue = returnValue + chr;
break;
case "4":
returnValue = returnValue + chr;
break;
case "3":
returnValue = returnValue + chr;
break;
case "2":
returnValue = returnValue + chr;
break;
case "1":
returnValue = returnValue + chr;
break;
}
i = i + 1;
}
return returnValue;
}
'string' является перечислимым символом' char', поэтому вместо выполнения дорогостоящей операции подстроки вы можете просто выполнить 'foreach (char c in v)'. Кроме того, используйте 'StringBuilder', если вы добавляете много строк или символов вместе, в большинстве случаев они будут более эффективными. –
Ваш заголовок говорит, что вы хотите сохранить символы, которые соответствуют определенным критериям, но имя метода в вашем фрагменте, кажется, указывает, что вы просто хотите проверить, является ли строка числом или нет. Так что это? –
Вы также должны использовать 'char.IsDigit (chr)' вместо нескольких конструкций case. –