Найти первое слово, соответствующее данному тексту - Regex - PullRequest
1 голос
/ 12 сентября 2010

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

Рассмотрим следующую строку в качестве примера

К какому типу относится ваш товар? я полагаю, что элемент не является строкой, если так Вы можете переопределить метод ToString () в класс предметов и использовать Jayant's Код.

Я хочу найти в нем первое слово «item» и заменить его текстом «hello». Помните, я просто хочу заменить первое слово "элемент" только, а не все.

Таким образом, вывод вышеприведенного текста будет выглядеть примерно так:

Какой тип тебе привет? я полагаю, что элемент не является строкой, если так Вы можете переопределить метод ToString () в класс предметов и использовать Jayant's Код.

Для этого я использую программирование на C #, и я бы предпочел использовать Regex, если это возможно.

Может кто-нибудь помочь мне с этим.

Ответы [ 2 ]

4 голосов
/ 12 сентября 2010

Вы можете использовать метод Regex.Replace() с 3-м параметром (максимальное количество замен):

Regex rgx = new Regex("item");
string result = rgx.Replace(str, "hello", 1);

См. На ideone

(хотя в этом случае вам не нужно регулярное выражение, потому что вы ищете константу.)

1 голос
/ 12 сентября 2010

Если вы открыты для альтернатив не-Regex, вы можете сделать что-то вроде этого

public static string ReplaceOnce(this string input, string oldValue, string newValue)
{
    int index = input.IndexOf(oldValue);
    if (index > -1)
    {
        return input.Remove(index, oldValue.Length).Insert(index, newValue);
    }

    return input;
}

//

Debug.Assert("bar bar bar".ReplaceOnce("bar", "foo").Equals("foo bar bar"));
...