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

本文关键字:数字字符 字符串 替换 | 更新日期: 2023-09-27 18:06:23

我试图用正则表达式将字符串中的所有字母数字字符替换为字符"-"。因此,如果输入是"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"。但是我可以找到另一个类。

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

你的正则表达式太贪婪了,删除*并开始结束字符串匹配。应该是

string s = "[a-zA-Z0-9]";

这将只匹配字符串中任何地方的一个字符,而不是所有字符。您还可以查看任何字母数字

的简写。
String s= "'w";

Try

string s = "[a-zA-Z0-9]";
Regex rgx = new Regex(s);
string s = "dune";
string result = rgx.Replace(s, "-");
Console.WriteLine(result);
Console.Read();

为什么你有一个字符串 s为你的正则表达式和另一个字符串 s为你的字符串?我将修改它以消除这里的混淆/错误

也要替换每个字母数字字符,您需要删除字符串的开头/字符串的结尾锚^ $*量词含义(0或更多次,匹配最多可能的数量)

Regex rgx = new Regex("[a-zA-Z0-9]");
string s  = "dune";
string result = rgx.Replace(s, "-");
Console.WriteLine(result); //=> "----"