在阅读类似问题的答案后,我想出了以下方法来解决我测试数字文本框内容的问题。
我现在的问题是:我的解决方案是否尽可能简单?
set /?
答案 0 :(得分:2)
不是,我会在这里给出一个单行,但我建议StringBuilder
进行代码维护。
public string NumbersAndDecimalPoints(string input)
{
return new string(input.ToCharArray().Where(t => char.IsDigit(t) || t == '.').ToArray());
}
如果你想要一个字符串。否则你也可以将它解析为一个数字。
return decimal.Parse(NumbersAndDecimalsPoints(v));
另一方面,如果任务是查明字符串是否为有效数字,我可以使用@Steve并使用Any()
或者只是尝试解析它。
使用Any()
(不会捕获多个分隔符):
var isNumber = !input.ToCharArray().Any(c => "1234567890.".IndexOf(c) < 0);
使用TryParse()
(真的是最好的方法):
var number = 0m;
var isNumber = decimal.TryParse(input, out number); // is number true = is valid number
答案 1 :(得分:2)
我个人使用正则表达式。
string newString = Regex.Replace(strToTest,@"[^\d.]","");
当然,我不知道为什么要这样做。像“测试23.测试42”之类的东西。将返回字符串23.42.