Заменить часть строки чем-то другим

1

Я хотел бы заменить значения в строке, отформатированной как [@ID = ###] чем-то другим. Строка может иметь [@ID = ###] и другие вещи, но это бит в скобках, которые меня интересуют. Например:

[@ID = 3671818] +2

Для этого я хочу заменить только "[@ID = 3671818]" --the "+2" должен оставаться таким, какой он есть.

Я хотел бы попробовать что-то вроде этого:

value = value.Replace().Insert();

Но я знаю, что это не сработает. Есть ли способ сделать это в одной строке кода или мне нужно работать с различными строковыми переменными? Как и в, мне нужна переменная startIndex и переменная endIndex, чтобы сначала удалить части "[@ID =" и "]", чтобы я мог нацелить только то, что находится между ними?

  • 0
    Похоже, вы делаете много работы для себя. Вместо удаления и добавления символов, почему бы просто не создать новую строку и добавить к ней «+2»?
  • 0
    @BobKaufman Я не уверен, что знаю, что ты имеешь в виду ...? Вы имеете в виду, что я должен использовать Split () в какой-то момент?
Показать ещё 2 комментария
Теги:
string
replace

1 ответ

6
Лучший ответ

Это регулярные выражения для:

string str = @"[@ID=3671818]+2";
var newStr = Regex.Replace(str, @"\[.*\]", "TEST");
Console.WriteLine(newStr);
//newStr = "TEST+2"

Все в скобках (включая скобки) будет заменено вашей заменой.

Если вы хотите сохранить скобки, вы должны использовать

@"(?<=\[).*(?=\])"  //newStr = "[TEST]+2"

который использует lookaheads и lookbehinds для поиска текста в квадратных скобках и заменяет этот текст.

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

  • 0
    Это отлично сработало для меня. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню