C # заменить строку, если строка имеет другие символы с обоих концов - PullRequest
0 голосов
/ 20 апреля 2019

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

Скажем, например, строка + 35343 + 3566. Я хочу заменить +35 на 0, только если он окружен символами с обеих сторон. Итак, желаемый результат будет + 35343066.

Обычно я бы использовал line.Replace("+35", "0") и, возможно, if-else, чтобы выполнить условие

string a = "+35343+3566";

string b = a.Replace("+35", "0");

Я бы хотел, чтобы 'b = +35343066, а не b = 0343066`

Ответы [ 2 ]

2 голосов
/ 20 апреля 2019

Вы можете использовать регулярные выражения для этого.Например:

var replaced = Regex.Replace("+35343+3566", "(?<=.)(\\+35)(?=.)", "0");
// replaced will contain +35343066

Итак, этот шаблон говорит о том, что +35 (\\+35) должен иметь один символ позади (?<=.) и один символ впереди (?=.)

1 голос
/ 20 апреля 2019

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

string a = "+35343+3566";

var regex = new Regex(@"(.)\+35(.)"); // look for "+35" between any 2 characters, while remembering the characters that were found in ${1} and ${2}
string b = regex.Replace(a, "${1}0${2}"); // replace all occurences with "0" surrounded by both characters that were found

См. Скрипку: https://dotnetfiddle.net/OdCKsy


Или немного проще, если окажется, что важен только префиксный символ:

string a = "+35343+3566";

var regex = new Regex(@"(.)\+35"); // look for a character followed by "+35", while remembering the character that was found in ${1}
string b = regex.Replace(a, "${1}0"); // replace all occurences with the character that was found followed by a 0

См. Скрипку: https://dotnetfiddle.net/9jEHMN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...