我正在尝试使用正则表达式替换字符串“ - ”中的字符串中的所有字母数字字符。所以如果输入是“Dune”,我应该得到“----”。目前虽然我只得到单曲“ - ”;
string s = "^[a-zA-Z0-9]*$";
Regex rgx = new Regex(s);
string s = "dune";
string result = rgx.Replace(s, "-");
Console.WriteLine(result);
Console.Read();
现在我知道它正在寻找字符串“dune”而不是字母“d”“u”“n”“e”。但我可以找到另一个可以工作的课程。
答案 0 :(得分:1)
你的正则表达式太贪心,删除*并开始结束字符串匹配。它应该是
string s = "[a-zA-Z0-9]";
这将只匹配字符串中任何位置的1个字符而不是全部。您还可以查看任何字母数字的简写
String s= "\w";
答案 1 :(得分:1)
尝试
string s = "[a-zA-Z0-9]";
Regex rgx = new Regex(s);
string s = "dune";
string result = rgx.Replace(s, "-");
Console.WriteLine(result);
Console.Read();
答案 2 :(得分:1)
为什么你的正则表达式有一个字符串 s
,而你的字符串有另一个字符串 s
?我会在此更改此消除 confusion / error 。
另外,要替换每个字母数字字符,您需要删除字符串锚点^ $
的字符串/结尾的开头和*
量词的含义(0
或更多次,匹配大多数可能的数量)
Regex rgx = new Regex("[a-zA-Z0-9]");
string s = "dune";
string result = rgx.Replace(s, "-");
Console.WriteLine(result); //=> "----"