【发布时间】:2011-06-23 12:44:28
【问题描述】:
我有一个很长的字符串,其中包含许多字符,例如:
"8798dsfgsd98gs87£%"%001912.43.36."
如何删除所有非数字字符并获取数字以便我可以得到:
“879898870019124336”
在 C# 中?
谢谢
【问题讨论】:
标签: c# .net regex string replace
我有一个很长的字符串,其中包含许多字符,例如:
"8798dsfgsd98gs87£%"%001912.43.36."
如何删除所有非数字字符并获取数字以便我可以得到:
“879898870019124336”
在 C# 中?
谢谢
【问题讨论】:
标签: c# .net regex string replace
var text = "8798dsfgsd98gs87£%"%001912.43.36.";
var numText = new string( text.Where(c=>char.IsDigit(c)).ToArray() );
编辑:
如果您的目标是性能,请使用StringBuilder:
var text = "8798dsfgsd98gs87£%"%001912.43.36.";
var numText = new StringBuilder();
for(int i = 0; i < text.Length; i++) {
char c = text[i];
if ( char.IsDigit(c) ) {
numText.Append(c);
}
}
【讨论】:
string text = "8798dsfgsd98gs87£%\"%001912.43.36.";
string digits = Regex.Replace(text, "[^0-9]", ""); // "879898870019124336"
【讨论】:
正则表达式答案...
using System.Text.RegularExpressions;
private string justNumeric(string str)
{
Regex rex = new Regex(@"[^\d]");
return rex.Replace(str,"");
}
【讨论】:
string str = "8798dsfgsd98gs87£%%001912.43.36.";
string result = string.Empty;
for (int j = 0; j < str.Length; j++)
{
int i;
try
{
i = Convert.ToInt16(str[j].ToString());
result += i.ToString();
}
catch { }
}
试试这个方法.....
【讨论】:
另一个正则表达式答案;
string str = "8798dsfgsd98gs87£%%001912.43.36.";
string justNumbers = new Regex(@"\D").Replace(str,"");
【讨论】: