阅读类似问题的答案后,我想出了以下方法来测试数字文本框内容的问题。通过字符串循环保持仅数字和小数点
我现在的问题是:我的解决方案是否尽可能简单?
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)'而不是多个大小写构造。 –