Как я могу заменить определенное слово на C #?

Рассмотрим следующий пример.

string s = "The man is old. Them is not bad."; 

Если я использую

 s = s.Replace("The", "@@"); 

Затем он возвращает "@@ man is old. @@m is not bad."
Но я хочу, чтобы выход был "@@ man is old. Them is not bad."

Как я могу это сделать?

Вот как вы будете использовать регулярное выражение, которое будет обрабатывать любые границы слов:

 Regex r = new Regex(@"\bThe\b"); s = r.Replace(s, "@@"); 

Я сделал комментарий выше, спрашивая, почему название было изменено, чтобы предположить, что Regex должен был использоваться.

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

Сложил тест. Запуск миллиона реплик с помощью методов Regex и string.

Regex занял 26,5 секунды для завершения, струнные методы заняли 8 секунд .

  //Using Regex. Regex r = new Regex(@"\b[Tt]he\b"); System.Diagnostics.Stopwatch stp = System.Diagnostics.Stopwatch.StartNew(); for (int i = 0; i < 1000000; i++) { string str = "The man is old. The is the Good. Them is the bad."; str = r.Replace(str, "@@"); } stp.Stop(); Console.WriteLine(stp.Elapsed); //Using String Methods. stp = System.Diagnostics.Stopwatch.StartNew(); for (int i = 0; i < 1000000; i++) { string str = "The man is old. The is the Good. Them is the bad."; //Remove the The if the stirng starts with The. if (str.StartsWith("The ")) { str = str.Remove(0, "The ".Length); str = str.Insert(0, "@@ "); } //Remove references The and the. We can probably //assume a sentence will not end in the. str = str.Replace(" The ", " @@ "); str = str.Replace(" the ", " @@ "); } stp.Stop(); Console.WriteLine(stp.Elapsed); 

s = s.Replace (“The”, “@@”);

Приложение C #

 static void Main(string[] args) { Console.Write("Please input your comment: "); string str = Console.ReadLine(); string[] str2 = str.Split(' '); replaceStringWithString(str2); Console.ReadLine(); } public static void replaceStringWithString(string[] word) { string[] strArry1 = new string[] { "good", "bad", "hate" }; string[] strArry2 = new string[] { "g**d", "b*d", "h**e" }; for (int j = 0; j < strArry1.Count(); j++) { for (int i = 0; i < word.Count(); i++) { if (word[i] == strArry1[j]) { word[i] = strArry2[j]; } Console.Write(word[i] + " "); } } }