如何从字符串中删除所有非数字字符并仅将数字作为新字符串?

时间:2011-06-23 12:44:28

标签: c# .net regex string replace

我有很多字符串,如:

“8798dsfgsd98gs87£%” %001912.43.36“。

如何删除所有非数字字符并获取数字以便我可以获得:

“879898870019124336”

在C#中

由于

5 个答案:

答案 0 :(得分:6)

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);
    }
}

答案 1 :(得分:2)

string text = "8798dsfgsd98gs87£%\"%001912.43.36.";
string digits = Regex.Replace(text, "[^0-9]", ""); // "879898870019124336"

答案 2 :(得分:0)

    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 { }
    }

试试这种方式......

答案 3 :(得分:0)

正则表达式回答......

using System.Text.RegularExpressions;

private string justNumeric(string str)
{
    Regex rex = new Regex(@"[^\d]");
    return rex.Replace(str,"");
}

答案 4 :(得分:0)

另一个正则表达式的答案;

string str = "8798dsfgsd98gs87£%%001912.43.36.";
string justNumbers = new Regex(@"\D").Replace(str,"");