2013-07-05 2 views
-2

Я хотел бы заменить все вхождения строки, если они не начинаются с '@', так, например, в следующем запрос:Заменить все вхождения строки только в том случае, если они не начинаются с '@'

(surname = @surname and surname = @surname1) 

, если я хочу, чтобы заменить surname, он будет заменить только два из них на левой стороне от знака равенства. Таким образом, оставив @surname и @surname1 не установлены.

+1

Вы еще что-нибудь пробовали? – Tim

ответ

3

Вы можете использовать Regex.Replace для этого:

Regex.Replace(yourString, "([^@])surname", "$1Diaz"); 

[^@] в основном говорит Regex, что любой символ, кроме символа @ может прийти перед «фамилия» текст, который вы ищете. $ 1 необходим, потому что в противном случае любой персонаж тоже будет лишен.

Обратите внимание, что это регулярное выражение без дополнительной модификации не будет соответствовать «фамилии», если оно находится в начале строки. В примере, который вы указали, он начинается с открытой скобки, поэтому, пока это условие выполняется, решение выше будет работать.

+0

Вы также можете использовать утверждения с нулевой шириной, чтобы устранить необходимость '$ 1'. –

+0

Спасибо за это, как его можно изменить так, чтобы он соответствовал «фамилии» в начале строки? –

Смежные вопросы