用其他东西替换部分字符串

Dej*_*can 1 c# string replace

我想将格式为[@ID = ###]的字符串中的值替换为其他内容.字符串可以有[@ID = ###]和其他东西,但它是我所关注的括号内的位.例如:

[@ ID = 3671818] +2

为此,我想只替换"[@ ID = 3671818]" - "+2"需要保持不变.

我想尝试这样的事情:

value = value.Replace().Insert();
Run Code Online (Sandbox Code Playgroud)

但我知道那是行不通的.有没有办法在一行代码中执行此操作,还是需要使用各种字符串变量?在中,我是否需要一个startIndex变量和endIndex变量来首先删除"[@ ID ="和"]"片段,以便我可以定位它们之间的内容?

Jon*_*lis 6

这是正则表达式的用途:

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

括号内的所有内容(包括括号)都将替换为替换字符串.

如果你想保留括号,你可以使用

@"(?<=\[).*(?=\])"  //newStr = "[TEST]+2"
Run Code Online (Sandbox Code Playgroud)

它使用lookaheads和lookbehinds在括号内查找文本,并替换该文本.

至于学习Regex,那里有很多指南,我更喜欢RegExr来测试它们.