替换C#字符串中的数字

时间:2011-12-21 08:34:12

标签: c# regex string

我正在尝试使用正则表达式对字符串做一些工作,但我遇到了一些困难。我的目标是用字符替换字符串中的数字,特别是如果字符串中有一组数字我想用*替换整个数字组。如果只有一个数字,我想用?替换它。

例如,如果我有字符串“test12345.txt”,我想把它变成“test * .txt”,但如果我有“test1.txt”,我想把它变成“测试? 。文本”。

我试过

Regex r = new Regex(@"\d+", RegexOptions.None);
returnString = r.Replace(returnString, "*");

但是这个替换用一个*

替换了一个数字

5 个答案:

答案 0 :(得分:15)

Regex.Replace

非常简单
string input = "test12345.txt";

// replace all numbers with a single *
string replacedstar = Regex.Replace( input, "[0-9]{2,}", "*" );

// replace remaining single digits with ?
string replacedqm = Regex.Replace( input, "[0-9]", "?" );

答案 1 :(得分:3)

这样做,首先它将匹配两个以上的数字并用*替换整个块,如果有单个数字则替换第二个语句,它将替换为?'

var newFileName = Regex.Replace(fileName, @"\d{2,}", "*");
newFileName = Regex.Replace(fileName, @"\d", "?");

希望这有帮助。

答案 2 :(得分:2)

使用两个正则表达式执行此操作:

  • \d{2,}替换为*
  • \d替换为?

答案 3 :(得分:2)

    static string ReplaceNumbers(string text)
    {
        string output = Regex.Replace(text, @"\d{2,}", "*");
        output = Regex.Replace(output, @"\d", "?");
        return output;
    }
  • \ d代表数字
  • {2,}表示至少2位数,没有最大限制

答案 4 :(得分:0)

        int n1 = Convert.ToInt32(number.Text);
        int n2 = Convert.ToInt32(replace.Text);
        int n3 = Convert.ToInt32(othernumber.Text);
        int temp;
        int result = 0;
        int i = 1;
        while (n1 > 0)
        {
            temp = n1 % 10;
            if (n2 == temp)
            {
                result += n3 * i;
            }
            else
            {
                result = result + temp * i;
            }
            i *= 10;
            n1 = n1 / 10;
        }
        afterswap.Text = Convert.ToString(result);