【问题标题】:How can I remove all special chars from UTF8 text in c#?如何从 c# 中的 UTF8 文本中删除所有特殊字符?
【发布时间】:2016-06-07 10:40:11
【问题描述】:

我想从我的 UTF8 文本中删除所有特殊字符,但我找不到任何匹配的正则表达式。

我的文字是这样的:

ASDÉÁPŐÓÖŰ_->,.!"%=%!HMHF

我只想删除这些字符:_->,.!"%=%!

我试过这个正则表达式:

result = Regex.Replace(text, @"([^a-zA-Z0-9_]|^\s)", "");

但它也会删除我的 uft8 字符。

我不想删除重音字符,但我想删除所有字形。

【问题讨论】:

  • 请定义“特殊字符”。 Uncode 包含数以万计的分类字符:说明您要保留哪些类别将是一个开始(并且“utf8 char”没有任何意义,UTF-8 只是将 Unicode 代码点编码为八位字节流,它说与字符分类无关)。
  • \P{L} 应该匹配任何不是字母的东西。
  • 我不认为它是重复的。我不需要确定它是否包含 utf-8。我想从 utf8 字符串中删除所有字形和其他字形。我不想删除重音字符...

标签: c# regex utf-8


【解决方案1】:
Regex.Replace(text, @"([^\w]|_)", "")

【讨论】:

  • 太棒了!谢谢你。它会删除所有非数字和非字母字符,并保留我的 utf8 字符,如下所示:É ...
  • @tixovoxi 如果它解决了您的问题,请您接受答案吗?
  • 它说我要等 4 分钟.. :D
【解决方案2】:

你只想要数字和字母?

那么这就是你的解决方案:

result = Regex.Replace(text, "[^0-9a-zA-Z]+", "");

如果您想在字符串中保留自定义方式,您也可以尝试在 ASCII 表中指定一个范围:

result = Regex.Replace(text, "[^\x00-\x80]+", "");

【讨论】:

  • 这也是一封信:ú
  • 这只是示例,您可以根据需要进行编辑!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
  • 2014-02-22
  • 2012-05-04
相关资源
最近更新 更多