2014-11-05 43 views
1

我想用别的东西替换格式为[@ID = ###]的字符串中的值。该字符串可以有[@ID = ###]和其他东西,但它是我关心的括号内的位。例如:用别的东西替换字符串的一部分

[@ ID = 3671818] 2

为此,我想只替换 “[@ ID = 3671818]” - 的 “2” 需要保持原样。

我想尝试这样的:

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

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

+0

听起来像你正在为自己做很多工作。为什么不创建一个新的字符串并在其后面添加“+2”而不是删除和预先添加字符? – 2014-11-05 20:07:37

+0

@BobKaufman我不确定我知道你的意思是...?你的意思是我应该在某个时候使用Split()? – 2014-11-05 20:09:11

+0

如果您只想创建一个以“+2”结尾的字符串,那么为什么不这样做,而不是从字符串中删除字符并插入新字符? – 2014-11-05 20:18:59

回答

6

这是正则表达式是:括号(包括括号)内

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

一切都将与您的替换字符串替换。

如果你想保留括号,你会使用

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

它采用向前看符号和lookbehinds找到括号内的文字,并替换文本。

就学习Regex而言,这里有很多指导,我更喜欢RegExr来测试它们。

+0

这对我来说很好。谢谢! – 2014-11-05 20:54:00