我想关闭全局设置(因为它默认设置为在 .NET 上使用),因为我想要做的只需要更改字符串的第一部分,但是它有可能将在字符串中出现两次,例如我希望
C00000WPF0000SAND
只改变 0 的第一个实例。
if (Regex.IsMatch(text, "^[a-z]+00+", RegexOptions.IgnoreCase))
{
text = Regex.Replace(text, "0{1,}", "00*", RegexOptions.IgnoreCase);
}
这就是我目前的做法,但是这似乎需要“00+”的每个实例并进行更改,但这会把事情搞砸。
请您参考如下方法:
您需要指定一个匹配限制; Regex.Replace(string, string, RegexOptions) 的文档明确指出它会替换找到的模式的所有实例。 Regex.Replace 没有同时采用匹配限制和正则表达式选项的静态重载,因此您必须构造一个 Regex 对象,然后使用 Replace(string, string, int) 重载。试试这个:
text = new Regex("0{1,}", RegexOptions.IgnoreCase).Replace(text, "00*", 1);
