如何用空格字符代替数字字符?

时间:2019-06-18 10:17:10

标签: c# string algorithm

我想将字符串中的每个非数字字符替换为空格字符

例如:"123X456Y78W9" -> "123 456 78 9"

只有我制定的解决方案在这里:

string input = "123X456Y78W9";
string output = "";

foreach (char c in input)
    if (c in (1, 2, 3, 4, 5, 6, 7, 8, 9, 0))
        output += c;
    else
        output += ' ';

有没有更简单的解决方法?

2 个答案:

答案 0 :(得分:6)

您可以将Regex.Replace()与所有非数字字符类一起使用。

string output = Regex.Replace(input, @"\D", @" ");

答案 1 :(得分:4)

Linq 正则表达式的替代方法:

string input = "123X456Y78W9"; 

string output = string.Concat(input.Select(c => c >= '0' && c <= '9' ? c : ' '));

或者如果您想保留所有Unicode数字(例如,波斯语的数字-۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹

string output = string.Concat(input.Select(c => char.IsDigit(c) ? c : ' '));