Замена цифр в строке C # - PullRequest
3 голосов
/ 21 декабря 2011

Я пытаюсь использовать регулярные выражения для работы со строками, но у меня возникли некоторые трудности. Моя цель - заменить числа в строке символом, особенно если в строке есть группа чисел, я хочу заменить всю группу чисел на *. Если есть только одна цифра, я хочу заменить ее на ?.

Например, если бы у меня была строка «test12345.txt», я бы хотел превратить ее в «test * .txt», но если у меня есть «test1.txt», я бы хотел превратить это просто в «test»? .текст".

Я пытался

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

Но это заменяет замену даже одной цифры на *

Ответы [ 4 ]

15 голосов
/ 21 декабря 2011

Это довольно легко с 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]", "?" );
3 голосов
/ 21 декабря 2011

Это будет сделано, сначала он будет соответствовать более чем двум цифрам и заменит полный блок на *, а 2-й оператор для, если есть одна цифра, он заменит на ? '

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

Надеюсь, это поможет.

2 голосов
/ 21 декабря 2011
    static string ReplaceNumbers(string text)
    {
        string output = Regex.Replace(text, @"\d{2,}", "*");
        output = Regex.Replace(output, @"\d", "?");
        return output;
    }
  • \ d для цифры
  • {2,} означает не менее 2 цифр без максимального ограничения
2 голосов
/ 21 декабря 2011

Сделайте это с двумя регулярными выражениями:

  • замените \d{2,} на *,
  • замените \d на ?.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...