在c# .net?For示例中,我有以下字符串,如何才能在100%匹配时替换字符串:
StringBuilder a = new(StringBuilder);
a = "ABC-1 ABC-1.1 ABC-1.1~1"我使用以下脚本替换字符串:
a.Replace("ABC-1", "ABC-2");目前的输出如下所示:
ABC-2 ABC-2.1 ABC-2.1~1取而代之的是,我寻找的输出如下:
ABC-2 ABC-1.1 ABC-1.1~1有人知道我该怎么做吗?
发布于 2019-02-06 12:39:54
这可能会有所帮助:
var a = "ABC-1 ABC-1.1 ABC-1.1~1";
var result = String.Join(" ", a.Split(' ').Select(x=>x=="ABC-1"? "ABC-2":x));结果:
"ABC-2 ABC-1.1 ABC-1.1~1"发布于 2019-02-06 12:40:29
如果您的输入中没有表示单词结束的标点符号,则链接到的"duplicate“将是一个很好的解决方案。因此,该线程中的正则表达式不能按原样工作。
不过,您应该能够使用negative lookahead。
var a = "ABC-1 ABC-1.1 ABC-1.1~1";
a = Regex.Replace(a, @"\bABC-1\b(?!\S)", "ABC-2");
Console.WriteLine(a); // ABC-2 ABC-1.1 ABC-1.1~1它基本上断言搜索词后面的字符不是非空格字符(但如果它是字符串的末尾,也会匹配)。
发布于 2019-02-07 01:09:53
如果只想替换第一次出现的情况,此方法可以帮助您:
public static string ReplaceFirst(this string original, string oldValue, string newValue)
{
var index = original.IndexOf(oldValue);
if (index >= 0) {
var prev = original.Substring(0, index);
var after = original.Substring(index + oldValue.Length);
return prev + newValue + after;
}
return original;
}https://stackoverflow.com/questions/54546581
复制相似问题