删除字符串中的字符,前提是括号括起来

时间:2013-05-18 22:53:53

标签: c# text replace

事先,我还没有学过正则表达式(虽然如果有人可以提供,我很乐意使用它)。

我有这样的字符串:

  

“zum Abschluss kommen(nachdrücklich; abgeschlossen werden)”。

我想要做的是将;替换为:,只要它出现在方括号()的某处。即:我希望我的字符串结束

  

“zum Abschluss kommen(nachdrücklich:abgeschlossen werden)”。

导致我麻烦的是,括号内可能有任意数量的文本,所以我通常的(笨拙的)字符串操作对我没有帮助。

额外的例子:

  

“alle Mann an Deck!(Seemannsspr。; ein Kommando)”

- >

  

“alle Mann an Deck!(Seemannsspr。:ein Kommando)”

我不能只替换()它,因为完整的字符串包含我想保留的;。例如:

  

“das Deck reinigen,scheuern; auf Deck sein; unter,von Deck gehen; alle Mann an Deck!(Seemannsspr .; ein Kommando);”

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

由于括号/括号没有嵌套或不平衡的限制,请考虑使用positive look-behind的正则表达式。

这种背后隐藏确保左侧( 更接近比任何)更近,因此我们必须在括号集内:

(?<=[(][^)]*);

使用中:

Regex.Replace(input, @"(?<=[(][^)]*);", ":");

如果初始约束无效,则此正则表达式将“无法预测”。

答案 1 :(得分:0)

也许有点啰嗦。

var a = "Your string";

// Get the bit within them
var bit = a.Substring(a.IndexOf("("), a.IndexOf(")")); 
// Fix the bit
var replaced = bit.Replace(";", ":");
// Put the fixed bit back in the original string
var result = a.Replace(bit, replaced);