Просто верните класс как новый внутри функции.
return new self();
Вот как можно использовать регулярное выражение, которое будет обрабатывать любые границы слов:
Regex r = new Regex(@"\bThe\b");
s = r.Replace(s, "@@");
Я сделал комментарий выше, спрашивая, почему заголовок был изменен так, чтобы предполагалось использование 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);