从字符串中删除不需要的unicode字符

时间:2020-06-26 04:13:18

标签: c#

我看了很多与此相关的SO帖子。我有一个格式错误的字符串,其中包含要删除的unicode字符。

string testString = "\0\u0001\0\0\0����\u0001\0\0\0\0\0\0\0\u0011\u0001\0\0\0\u0004\0\0\0\u0006\u0002\0\0\0\u0005The\u0006\u0003\0\0\0\u0017boy\u0006\u0004\0\0\0\tKicked\u0006\u0005\0\0\0\u0013the Ball\v";

我想要以下输出:

The boy kicked the Ball

我该如何实现?

我查看了以下内容(未成功):

  1. How can you strip non-ASCII characters from a string? (in C#)
  2. Converting unicode characters (C#) Testing
  3. How to Remove '\0' from a string in C#?
  4. Removing unwanted character from column(与SQL Server相关,因此与我的问题无关)

4 个答案:

答案 0 :(得分:1)

testString = Regex.Replace(testString, @"[\u0000-\u0008\u000A-\u001F\u0100-\uFFFF]", "");

testString = Regex.Replace(testString, @"[^\t\r\n -~]", "");

答案 1 :(得分:0)

尝试一下:

string s = "søme string";
s = Regex.Replace(s, @"[^\u0000-\u007F]+", string.Empty);

希望有帮助。

答案 2 :(得分:0)

为什么不尝试删除Unicode字符,而是提取所有ASCII字符:

var str = string.Join(" ",new Regex("[ -~]+").Matches(testString).Select(m=>m.Value));

答案 3 :(得分:0)

我使用此正则表达式过滤掉文件名中的错误字符。

Regex.Replace(directory, "[^a-zA-Z0-9\\:_\- ]", "")