在此之前,我还没有学到regex (虽然我很乐意使用它,如果有人可以提供它)。
我有这样的条件:
"zum Abschluss kommen (nachdrücklich;abgeschlossen werden)“。
我想要做的是,每当字符;出现在方括号()中时,就将它替换为:。艾莉:我想让我的绳子结束
"zum Abschluss kommen (nachdrücklich: abgeschlossen werden)“。
给我带来麻烦的是,括号内可能有多少文本,所以我通常的(笨拙的)字符串处理方式对我没有帮助。
额外的例子:
“阿勒·曼恩甲板!”(西曼斯波;艾因·科曼多)
->
“阿勒·曼恩·安德!”(西曼斯佩:艾因·科曼多)
我不能仅仅替换(),因为完整的字符串包含我想要保留的;。例:
大甲板;甲板;
有什么建议吗?
发布于 2013-05-18 23:07:08
由于括号/括号不是嵌套或不平衡的限制,那么考虑使用积极后视的正则表达式。
这个后面的查看确保了比任何一个(都更接近于左),因此我们必须在一个方括号集中:
(?<=[(][^)]*);在使用中:
Regex.Replace(input, @"(?<=[(][^)]*);", ":");如果初始约束无效,则此正则表达式将“不可预测地”工作。
发布于 2013-05-18 23:04:24
也许是长了点气。
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); https://stackoverflow.com/questions/16629758
复制相似问题