Могу ли я использовать регулярные выражения с String.Replace в C #? - PullRequest
14 голосов
/ 05 мая 2010

Например, у меня есть код ниже string txt = "У меня есть строки, такие как Запад и Запад; и Запад, и Запад."

Я бы хотел заменить слово запад или запад другим словом. Но я бы не хотел заменять Запад западным.

  1. Могу ли я использовать регулярное выражение в string.replace? я использовал inputText.Replace("(\\sWest.\\s)",temp); Это не сработает.

Ответы [ 9 ]

25 голосов
/ 05 мая 2010

Для замены всего слова (а не части слова):

string s = Regex.Replace(s, @"\bwest\b", "something");
25 голосов
/ 21 января 2015

Ответ на вопрос НЕТ - вы не можете использовать регулярное выражение в строке. Заменить.

Если вы хотите использовать регулярное выражение, вы должны использовать класс Regex, как все заявили в своих ответах.

7 голосов
/ 05 мая 2010

Вы смотрели на Regex.Replace? Кроме того, не забудьте поймать возвращаемое значение; Replace (через любой строковый механизм) возвращает новую строку - она ​​не выполняет замену на месте.

4 голосов
/ 05 мая 2010

Попробуйте использовать класс System.Text.RegularExpressions.Regex. У него есть статический метод Replace. Я не очень хорошо разбираюсь в регулярных выражениях, но что-то вроде

string outputText = Regex.Replace(inputText, "(\\sWest.\\s)", temp);

должно работать, если ваше регулярное выражение верно.

2 голосов
/ 05 мая 2010

ИСПОЛЬЗУЙТЕ этот код, если хотите, чтобы он не учитывал регистр

string pattern = @"\bwest\b";
string modifiedString = Regex.Replace(input, pattern, strReplacement, RegexOptions.IgnoreCase);
1 голос
/ 05 мая 2010

Я согласен с решением Роберта Харви, за исключением одной маленькой модификации:

s = Regex.Replace(s, @"\bwest\b", "something", RegexOptions.IgnoreCase);

Это заменит «запад» и «запад» новым словом

0 голосов
/ 17 мая 2017

В Java String#replace принимает строки в формате регулярных выражений, но C # может делать это также с помощью расширений:

public static string ReplaceX(this string text, string regex, string replacement) {
    return Regex.Replace(text, regex, replacement);
}

И используйте это как:

var text = "      space          more spaces  ";
text.Trim().ReplaceX(@"\s+", " "); // "space more spaces"
0 голосов
/ 22 июля 2016

класс Regex является статическим, когда вы используете метод Replace (Regex.Replace).

public static class Extension
{
        public static string ReplaceValue(string data,string criteria)
        {
              return s = Regex.Replace(s, @"\bwest\b", "something");
         }
}
0 голосов
/ 01 октября 2014

Вставить регулярное выражение в код перед классом

using System.Text.RegularExpressions;

ниже приведен код для замены строки с использованием регулярного выражения

string input = "Dot > Not Perls";
// Use Regex.Replace to replace the pattern in the input.
string output = Regex.Replace(input, "some string", ">");

источник: http://www.dotnetperls.com/regex-replace

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...