我想关闭全局设置(因为它被设置为默认在 .NET 上使用),因为我想做的只需要更改字符串的第一部分,但是它有可能会发生两次在字符串中,例如我希望
C00000WPF0000SAND
仅更改 0 的第一个实例。
if (Regex.IsMatch(text, "^[a-z]+00+", RegexOptions.IgnoreCase))
{
text = Regex.Replace(text, "0{1,}", "00*", RegexOptions.IgnoreCase);
}
Run Code Online (Sandbox Code Playgroud)
这就是我目前正在做的事情,但是这似乎需要“00+”的每个实例并更改它,但这会把事情搞砸。
您需要指定匹配限制;的文档Regex.Replace(string, string, RegexOptions)明确指出它会替换找到的模式的所有实例。不存在Regex.Replace同时采用匹配限制和正则表达式选项的静态重载,因此您必须构造一个 Regex 对象,然后使用重载Replace(string, string, int)。尝试这个:
text = new Regex("0{1,}", RegexOptions.IgnoreCase).Replace(text, "00*", 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2574 次 |
| 最近记录: |