【发布时间】:2011-10-08 16:06:39
【问题描述】:
我需要删除字符串中出现的所有换行符(来自 db)。 我使用下面的代码:
value.Replace("\r\n", "").Replace("\n", "").Replace("\r", "")
我可以看到至少有一个角色表现得像行尾一样幸存下来。字符代码为8232。
我很蹩脚,但我必须说这是我第一次有幸看到这个字符。很明显,我可以直接替换这个字符,但我正在考虑将我目前的方法(基于替换“\r”和“\n”的组合)扩展到更可靠的东西,所以它不仅包括 ' 8232' char 以及所有其他我还没有找到的字符。
对于这样的问题,你有没有万全之策?
编辑#1:
在我看来有几种可能的解决方案:
- 使用 Regex.Replace
- 如果是 IsSeparator 或 IsControl,则删除所有字符
- 如果是 IsWhiteSpace,则替换为“”
- 创建所有可能的行尾(“\r\n”、“\r”、“\n”、LF、VT、FF、CR、CR+LF、NEL、LS、PS)的列表,然后替换他们用空字符串。有很多替代品。
我会说最好的结果将是在应用第 1 种和第 4 种方法之后,但我无法决定哪种方法会更快。你觉得哪一个最完整?
编辑#2
我在下面发布了答案。
【问题讨论】:
-
不管怎样,你遇到的角色是 U+2028,'LINE SEPARATOR'。 fileformat.info/info/unicode/char/2028/index.htm
-
我已经删除了我的答案,但是以下内容呢:stackoverflow.com/questions/238002/…
-
它只是询问换行符,而不是它们的特殊情况。在这个老问题的上下文中,答案是正确的,因为OP显然不关心这种特殊情况,否则他会提到它们。
-
感谢您的解释,我从未在不到 1 分钟内得到 -3。有徽章吗? :-)))