You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中用正则匹配并移除字符串中的-字符?

解决C#中移除ASCII控制字符的正则问题

你的原代码正则表达式逻辑完全写反了:[^\u0000-\u007F] 是匹配不在ASCII 0-127范围内的字符,替换为空后会保留所有ASCII字符(包括你要移除的\u0000和\u007F),这和需求不符。

要匹配并移除\u0000(NULL)到\u001F(C0控制字符)以及\u007F(DEL)这些目标字符,正确的正则表达式应该是匹配这个控制字符子集,然后替换为空。

修正后的代码

if (!string.IsNullOrWhiteSpace(testString))
{
    // 匹配U0000-U001F控制字符及U007F删除符,替换为空
    return Regex.Replace(testString, @"[\u0000-\u001F\u007F]", string.Empty);
}
return testString;

验证示例

  • 输入 "\u007FTestString" → 匹配到\u007F并移除,输出TestString,符合预期。
  • 输入 "\u007FTestString\U0000" → 匹配到\u007F和\u0000并移除,输出TestString,符合预期。

如果你的需求确实是移除所有ASCII 0-127范围内的字符(这与示例矛盾,仅作补充),可以用正则[\u0000-\u007F],但这会同时删除可打印的ASCII字符(如示例中的TestString),需谨慎使用。

内容的提问来源于stack exchange,提问作者Utsab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 04:12:42