Можно ли использовать регулярные выражения с String.Replace в С#?

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

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

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

Ответ 1

Чтобы заменить все слово (а не часть слова):

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

Ответ 2

Ответ на вопрос НЕТ - вы не можете использовать regexp в string.Replace.

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

Ответ 3

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

Ответ 4

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

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

должен работать, если правильное выражение правильно.

Ответ 5

Используйте этот код, если вы хотите, чтобы он был нечувствительным к регистру

string pattern = @"\bwest\b";
string modifiedString = Regex.Replace(input, pattern, strReplacement, RegexOptions.IgnoreCase);

Ответ 6

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

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

Это заменит "Запад" и "Запад" новым словом

Ответ 7

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

using System.Text.RegularExpressions;

ниже приведен код для замены строки с помощью regex

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

Ответ 8

В Java String#replace принимает строки в формате regex, но С# также может делать это с помощью расширений:

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"

Ответ 9

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

public static class Extension
{
        public static string ReplaceValue(string data,string criteria)
        {
              return s = Regex.Replace(s, @"\bwest\b", "something");
         }
}