【问题标题】:Replacing specials character with plain white space in c#?用c#中的纯空格替换特殊字符?
【发布时间】:2013-08-03 04:40:51
【问题描述】:

我正在尝试用 utf-8 文件中的纯空格替换特殊字符。问题是当我尝试空格字符或空字符时,如果替换特殊字符,但用其他一些特殊字符,如带问号或小方块的菱形。

这是我用来替换其中一个字符的代码:

content = content.Replace((char)0XA0, '\0');

我也试过了:

content = content.Replace((char)0XA0, ' ');

它也不起作用

我正在处理的文件可能会变得非常大,因此一次解析一个字符是不可行的。

寻找任何关于如何让它发挥作用的建议。

谢谢

【问题讨论】:

  • 您的阅读或编写代码可能是错误的......另外用 \0 替换某些内容可能是个坏主意 - 您的标题似乎暗示了 ' '(代码为 32 或 @987654324 的字符@,而不是 0x0)。
  • 是的,我编辑了条目,我也尝试了“”,但没有用。
  • 您没有显示读取/写入文件的代码...

标签: c# replace char


【解决方案1】:

0xA0 不是字符的有效 UTF-8 表示。字符 uA0 的实际 UTF-8 表示是 194 160(或 0xC2 0xA0)。

您可以使用字符串文字代替

content = content.Replace('\u00A0', ' ');

使用 UTF-8 时,高于 127 的 UTF 代码将表示为代理对。

【讨论】:

  • 有趣。但是 0x0A 在 utf-8 (当我在 Notepad++ 中打开文件时显示的)文件中,我必须保留它 utf-8,因为其中有中文字符,它们是 utf-8。但我会尝试你的建议。谢谢。
  • .NET 将字符串内部存储在 utf-16 中。如果您正在使用字符串操作内容,那么它们是 utf-16。此时,您需要确保在将其写回文件时,它是以 utf-8 编码的。
【解决方案2】:

在处理特殊的 utf-8 字符时,您会很乐意使用 ushort uint 而不是 char,因为 utf-8 字符可以是大约一到四个字节。

【讨论】:

    【解决方案3】:

    你试过 content = content.Replace((char)0XA0, ' '); 吗?

    【讨论】:

      猜你喜欢
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多