Я хотел бы заменить значения в строке, отформатированной как [@ID = ###] чем-то другим. Строка может иметь [@ID = ###] и другие вещи, но это бит в скобках, которые меня интересуют. Например:
[@ID = 3671818] +2
Для этого я хочу заменить только "[@ID = 3671818]" --the "+2" должен оставаться таким, какой он есть.
Я хотел бы попробовать что-то вроде этого:
value = value.Replace().Insert();
Но я знаю, что это не сработает. Есть ли способ сделать это в одной строке кода или мне нужно работать с различными строковыми переменными? Как и в, мне нужна переменная startIndex и переменная endIndex, чтобы сначала удалить части "[@ID =" и "]", чтобы я мог нацелить только то, что находится между ними?
Это регулярные выражения для:
string str = @"[@ID=3671818]+2";
var newStr = Regex.Replace(str, @"\[.*\]", "TEST");
Console.WriteLine(newStr);
//newStr = "TEST+2"
Все в скобках (включая скобки) будет заменено вашей заменой.
Если вы хотите сохранить скобки, вы должны использовать
@"(?<=\[).*(?=\])" //newStr = "[TEST]+2"
который использует lookaheads и lookbehinds для поиска текста в квадратных скобках и заменяет этот текст.
Что касается изучения Regex, там есть масса гидов, и я предпочитаю RegExr для их тестирования.