Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以使用正则表达式仅用两个冒号替换两个或多个冒号吗_C#_Regex - Fatal编程技术网

C# 我可以使用正则表达式仅用两个冒号替换两个或多个冒号吗

C# 我可以使用正则表达式仅用两个冒号替换两个或多个冒号吗,c#,regex,C#,Regex,开发人员已经编写了这个代码,但它似乎是一个不太干净的实现,如果用户输入许多冒号,它也不起作用。我想使用正则表达式,但正则表达式是否可以检查两个或更多冒号,并用两个冒号替换 renameString = renameString.Replace(":::::::", "::"); renameString = renameString.Replace("::::::", "::"); renameString = re

开发人员已经编写了这个代码,但它似乎是一个不太干净的实现,如果用户输入许多冒号,它也不起作用。我想使用正则表达式,但正则表达式是否可以检查两个或更多冒号,并用两个冒号替换

renameString = renameString.Replace(":::::::", "::");
renameString = renameString.Replace("::::::", "::");
renameString = renameString.Replace(":::::", "::");
renameString = renameString.Replace("::::", "::");
renameString = renameString.Replace(":::", "::");
有没有人对更好的方法有什么建议

以下是该方法的完整代码供参考:

if (renameString.StartsWith(":") || renameString.EndsWith(":"))
{
    AcceptText.IsEnabled = false;
    IsValidDeckName = false;
}
else
if (renameString.Contains("::"))
{
    renameString = renameString.Replace(":::::::", "::");
    renameString = renameString.Replace("::::::", "::");
    renameString = renameString.Replace(":::::", "::");
    renameString = renameString.Replace("::::", "::");
    renameString = renameString.Replace(":::", "::");
    IsValidDeckName = true;
    AcceptText.IsEnabled = true;
}
else
{
    IsValidDeckName = true;
    AcceptText.IsEnabled = true;

}

任何关于是否可以改进的建议都将不胜感激。

使用Regex
Regex.Replace(重命名字符串“::+”,“::”)
使用正则表达式:

renameString = Regex.Replace(renameString, @":{3,}", "::");

换句话说:将至少出现3次字符“:”的所有序列替换为“:”。

如果字符串包含一行中超过7个冒号的序列,应如何处理?是否应保留其他冒号?e、 g.如果原始字符串为“::::”则结果应为“::”?任何两个以上的冒号都应转换为两个冒号。