Fre*_*örk 196
有很多方法,但这应该做(虽然不知道它是如何用非常大的字符串执行的):
private static string GetNumbers(string input)
{
return new string(input.Where(c => char.IsDigit(c)).ToArray());
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*röm 51
感觉非常适合正则表达.
var s = "40,595 p.a.";
var stripped = Regex.Replace(s, "[^0-9]", "");
Run Code Online (Sandbox Code Playgroud)
"[^0-9]"可以替换,@"\D"但我喜欢的可读性[^0-9].
小智 8
扩展方法将是一种更好的方法:
public static string GetNumbers(this string text)
{
text = text ?? string.Empty;
return new string(text.Where(p => char.IsDigit(p)).ToArray());
}
Run Code Online (Sandbox Code Playgroud)
小智 6
public static string RemoveNonNumeric(string value) => Regex.Replace(value, "[^0-9]", "");
Run Code Online (Sandbox Code Playgroud)
使用仅捕获0-9的正则表达式并抛弃其余部分.正则表达式是第一次花费很多的操作.或者做这样的事情:
var sb = new StringBuilder();
var goodChars = "0123456789".ToCharArray();
var input = "40,595";
foreach(var c in input)
{
if(goodChars.IndexOf(c) >= 0)
sb.Append(c);
}
var output = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
像我想的那样,我还没编译过..
正如弗雷德里克所说,LINQ也是一种选择
另外一个选项 ...
private static string RemoveNonNumberDigitsAndCharacters(string text)
{
var numericChars = "0123456789,.".ToCharArray();
return new String(text.Where(c => numericChars.Any(n => n == c)).ToArray());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75752 次 |
| 最近记录: |