试图做在一个字符串一些正则表达式匹配和替换,从而使所有符号,单引号和空格字符与短划线代替更换任何两场的C#正则表达式:“ - ”具有相同值
.. 。和
将所有重复的破折号替换为单个破折号。
这就是我正在尝试,但它不工作,因为重复的破折号不被替换。任何帮助表示赞赏和感谢。
Regex.Replace(mystring, "([' &])|([-]{2,})", "-")
试图做在一个字符串一些正则表达式匹配和替换,从而使所有符号,单引号和空格字符与短划线代替更换任何两场的C#正则表达式:“ - ”具有相同值
.. 。和
将所有重复的破折号替换为单个破折号。
这就是我正在尝试,但它不工作,因为重复的破折号不被替换。任何帮助表示赞赏和感谢。
Regex.Replace(mystring, "([' &])|([-]{2,})", "-")
试试这个(看起来更简单)。我假设你从来不想在结果中使用“ - ”。
string orig = "12467&89- 1&2467'89 12'46789 12467--89";
Regex regex = new Regex("[&' -]+");
string newString = regex.Replace(orig, "-");
输出:
12467-89-1-2467-89-12-46789-12467-8
谢谢詹姆斯,这是一个很大的帮助。 – larryq 2012-07-25 14:42:57
这个正则表达式应该工作:
你只需要做的任务:
mystring = Regex.Replace(mystring, "([' &])|([-]{2,})", "-");
字符串是不可改变的,还记得吗?
谢谢迈克尔。如果我以这个调用为例,我仍然在连续得到两个破折号:string mystring = Regex.Replace(“hi& - 6-”,“(['&])|([ - ] {2,})” ,“ - ”); – larryq 2012-07-24 23:34:30
是的,因为您的正则表达式不会将连字符和带连字符的单引号组合在一起。如果你的意图是你的结果字符串没有双连字符,那么在James的答案中使用正则表达式。 – 2012-07-24 23:40:57
这可能会更好地说, “符号,单引号和空格字符” 不是 “和”, “'”。后者非常难以阅读。 – 2012-07-24 23:21:14
我们可以得到一个不工作的字符串样本吗? – 2012-07-24 23:24:01