c# - 我可以使用正则表达式仅用两个冒号替换两个或多个冒号吗
问题描述
开发人员已经对此进行了编码,但它似乎不是那么干净的实现,如果用户输入许多冒号,它也不起作用。我想使用正则表达式,但正则表达式是否可以检查两个或多个冒号并仅替换为两个?
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.Replace(renameString,"::+","::")
推荐阅读
- protocol-buffers - 如何使用协议缓冲区来构建第三方串行通信协议?
- javascript - 在Javascript中按自定义顺序对列表项进行排序
- vba - 集成用于将注释消息文本框添加到现有 .docm 模板的宏
- python - 使用一组标记运行测试,这些标记基于命令行参数的值选择
- bootloader - 如何在启动操作系统之前进行一些安全验证?
- php - 301 请求 Tumblr 时永久移动 oauth_token | PHP
- c# - 构造函数属性
- graphql - 在 GraphQL 中获取动态区域类型
- java - 比较 ArrayList 中的两个字符串,找出每个人的最高分
- java - javax.crypto.AEADBadTagException:在 GCM 中的 mac 检查失败