替换字符串中出现的所有字母数字字符

时间:2014-06-02 20:56:40

标签: c# regex

我正在尝试使用正则表达式替换字符串“ - ”中的字符串中的所有字母数字字符。所以如果输入是“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”。但我可以找到另一个可以工作的课程。

3 个答案:

答案 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); //=> "----"