首页 > 解决方案 > 我可以使用正则表达式仅用两个冒号替换两个或多个冒号吗

问题描述

开发人员已经对此进行了编码,但它似乎不是那么干净的实现,如果用户输入许多冒号,它也不起作用。我想使用正则表达式,但正则表达式是否可以检查两个或多个冒号并仅替换为两个?

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;

}

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

标签: c#regex

解决方案


使用正则表达式Regex.Replace(renameString,"::+","::")


推荐阅读