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

Просто верните класс как новый внутри функции.

return new self();
6
задан Michael Myers 19 May 2009 в 21:56
поделиться

3 ответа

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

Regex r = new Regex(@"\bThe\b");
s = r.Replace(s, "@@");
23
ответ дан 8 December 2019 в 03:11
поделиться

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

3
ответ дан 8 December 2019 в 03:11
поделиться

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

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

Составил тест. Выполнение миллиона замен с помощью Regex и строковых методов.

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);
4
ответ дан 8 December 2019 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: