Заменить String.Replace на Regex.Replace - PullRequest
7 голосов
/ 06 декабря 2010

СТАРЫЙ :

private string Check_long(string input)
{
    input = input.Replace("cool", "supercool");
    input = input.Replace("cool1", "supercool1");
    input = input.Replace("cool2", "supercool2");
    input = input.Replace("cool3", "supercool3");
    return input;
}

NEW :

private string Check_short(string input)
{    
    input = Regex.Replace(input, "cool", "supercool", RegexOptions.IgnoreCase);
    input = Regex.Replace(input, "cool1", "supercool1", RegexOptions.IgnoreCase);
    input = Regex.Replace(input, "cool2", "supercool2", RegexOptions.IgnoreCase);
    input = Regex.Replace(input, "cool3", "supercool3", RegexOptions.IgnoreCase);
    return input;
}

Старое решение с String.Replace работало просто отлично.Но это не поддержало нечувствительность к регистру.Поэтому мне пришлось проверить на Regex.Replace, но теперь это не сработает.Почему это?

Ответы [ 3 ]

13 голосов
/ 06 декабря 2010

Ваш новый код должен работать нормально.Обратите внимание, что вы также можете сохранить регистр ввода, используя группу захвата :

private string Check_short(string input)
{    
    return Regex.Replace(input, "(cool)", "super$1", RegexOptions.IgnoreCase);
}
5 голосов
/ 06 декабря 2010

здесь работает нормально:

        string input = "iiii9";
        input = Regex.Replace(input, "IIII[0-9]", "jjjj" , RegexOptions.IgnoreCase);
        label1.Text = input;

вывод

jjjj
0 голосов
/ 06 декабря 2010

Regex не работает, как, например, string.replace. Вам нужно построить регулярное выражение вокруг того, что вы пытаетесь отфильтровать.

private string Check_short(string input)
{    
    input = Regex.Replace(input, ".*(cool).*", "supercool", RegexOptions.IgnoreCase);
    return input;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...