字符串替换 - C#

时间:2009-10-13 12:45:36

标签: c# string

说我有一个包含数字和其他字符的字符串。

我想将字符串仅减少为数字。

F.e。从23232-2222-d23231到23232222223231

可以用string.replace()完成吗?

如果没有,最简单最短的方式是什么?

10倍!

12 个答案:

答案 0 :(得分:15)

有许多可能性,从正则表达式到自己处理文本。我会这样做:

Regex.Replace(input, @"\D+", "")

答案 1 :(得分:4)

那么,你将通过String.Replace和Regex.Replace获得大约874355876234857的答案,所以这是一个LINQ解决方案:

code = new String((from c in code where Char.IsDigit(c) select c).ToArray());

或使用扩展方法:

code = new String(code.Where(c => Char.IsDigit(c)).ToArray());

答案 2 :(得分:2)

是的,您可以使用String.replace,但使用正则表达式会更明智,这样您就可以轻松地匹配更多标准。

答案 3 :(得分:2)

最好的方法是使用正则表达式。你的例子是:

RegEx.Replace("23232-2222-d23231", "\\D+", "");

答案 4 :(得分:1)

采样的正则表达式是最简单和最短的。

我想知道下面会更快吗?

            string sample = "23232-2222-d23231";
            StringBuilder resultBuilder = new StringBuilder(sample.Length);
            char c;
            for (int i = 0; i < sample.Length; i++)
            {
                c = sample[i];
                if (c >= '0' && c <= '9')
                {
                    resultBuilder.Append(c);
                }
            }
            Console.WriteLine(resultBuilder.ToString());
            Console.ReadLine();

猜测它取决于一些事情,包括字符串长度。

答案 5 :(得分:0)

最简单的方法是使用替换。

 string test = "23232-2222-d23231";
 string newString = test.Replace("-","").Replace("d","");

但使用REGEX会更好,但更难。

答案 6 :(得分:0)

string.Replace()不能(轻松)实现。最简单的解决方案是以下函数/代码:

public string GetDigits(string input)
{
    Regex r = new Regex("[^0-9]+");
    return r.Replace(input, "");
}

答案 7 :(得分:0)

我会使用正则表达式。

请参阅此帖子Regex for numbers only

答案 8 :(得分:0)

您可以使用简单的扩展方法:

    public static string OnlyDigits(this string s)
    {
        if (s == null)
            throw new ArgumentNullException("null string");

        StringBuilder sb = new StringBuilder(s.Length);
        foreach (var c in s)
        {
            if (char.IsDigit(c))
                sb.Append(c);
        }
        return sb.ToString();
    }

答案 9 :(得分:0)

尝试

string str="23232-2222-d23231";
str=Regex.Replace(str, @"\D+", String.Empty);

答案 10 :(得分:0)

您可以使用LINQ:

string allDigits = new String(input.Where(c => Char.IsDigit(c)).ToArray());

答案 11 :(得分:-1)

您可以使用正则表达式。

string str = "sdfsdf99393sdfsd";
str = Regex.Replace(str, @"[a-zA-Z _\-]", "");

我之前使用它只返回字符串中的数字。