我正在尝试对字符串进行正则表达式替换,但它并不像我希望的那样顺利。我使用在线工具构建了这个正则表达式,测试显示了我的预期,但是当我运行代码时,我没有得到预期的结果。
我的代码:
Regex reg = new Regex(@"[^a-zA-Z0-9-]$");
string docName = t.Title.ToLower();
reg.Replace(docName, "-");
我希望通过一个字符串来表达:"hey! thsi is am@&4$amazing!"
我最终会:"hey- thsi is am--4-amazing-
我在某处出错了吗?
答案 0 :(得分:6)
[^a-zA-Z0-9-]$
^^
$断言行尾的位置
所以你们只会在行尾之前替换特殊字符。
只需使用
[^a-zA-Z0-9-]
此外,这将取代space
。所以最好使用
[^a-zA-Z0-9 -]
参见演示。