【问题标题】:How can I delete all the non-numerical chars from a string and get the numerics only as a new string?如何从字符串中删除所有非数字字符并将数字仅作为新字符串获取?
【发布时间】:2011-06-23 12:44:28
【问题描述】:

我有一个很长的字符串,其中包含许多字符,例如:

"8798dsfgsd98gs87£%"%001912.43.36."

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

“879898870019124336”

在 C# 中?

谢谢

【问题讨论】:

    标签: c# .net regex string replace


    【解决方案1】:
    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);
        }
    }
    

    【讨论】:

    • 这比 RegEx 快吗? (无论如何我认为它会对我有所帮助,而且它是完全可读的!)
    • 它将是“标准”快速。这意味着 - 有更好的性能解决方案,但 LINQ 对典型的商业应用场景有很好的优化。看看我的“编辑”部分。
    【解决方案2】:
    string text = "8798dsfgsd98gs87£%\"%001912.43.36.";
    string digits = Regex.Replace(text, "[^0-9]", ""); // "879898870019124336"
    

    【讨论】:

      【解决方案3】:

      正则表达式答案...

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

      【讨论】:

        【解决方案4】:
            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 { }
            }
        

        试试这个方法.....

        【讨论】:

          【解决方案5】:

          另一个正则表达式答案;

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

          【讨论】:

            猜你喜欢
            • 2011-10-19
            • 1970-01-01
            • 1970-01-01
            • 2013-04-30
            • 1970-01-01
            • 2013-06-24
            • 1970-01-01
            • 1970-01-01
            • 2013-11-12
            相关资源
            最近更新 更多