通过字符串循环只保留数字和小数点

时间:2015-10-25 19:46:15

标签: c#

在阅读类似问题的答案后,我想出了以下方法来解决我测试数字文本框内容的问题。

我现在的问题是:我的解决方案是否尽可能简单?

set /?

2 个答案:

答案 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.