【发布时间】:2016-03-22 18:47:58
【问题描述】:
这可能是一个愚蠢的问题,但一些粗略的搜索并没有给我答案。我在寻找字符串中的无效字符时遇到问题;其中恰好是换行符、制表符等。但是,当找到一个时,它会打印到控制台;可以想象,
"Character
is invalid"
可能会让团队一目了然。那么在 C# 中是否有一种快速简便的方法可以将换行符转换为其字符串文字版本"\n",但不会转换非“特殊”的无效字符?
这是我的代码的简化版本:
using System.Text.RegularExpressions
class Foo {
Regex invalidCheck = @"[^\w_ ]";
public void ParseString(string command) {
var invalid = invalidCheck.Match(command)
if (invalid.Success)
Console.WriteLine("Invalid character " + invalid.Value)
else {
// Do things with the string...
}
}
}
当程序运行时,我不知道invalid.Value实际上是什么,但我知道我需要得到它才能将空白字符转换为可读的东西。
【问题讨论】:
-
查看 string.Replace 或 Regex.Replace (文字或正则表达式),这将直接用于单个 \n -> "\n" (请记住斜杠或使用字符串逐字逐句文字),但更有趣的是不可打印/空白 -> 转义。
-
你的代码是什么样的?
-
s = s.Replace("\r", "\"\\r\"").Replace("\n", "\"\\n\"");跨度>
-
换行符在代码中不显示为
\n。这只是对编码器友好的表示 - 新行是一个字节,而不是两个字节。您需要在每个特殊字符的基础上执行s/\n/\\n/之类的操作,以将该单个换行符转换为两个文字字符。 -
尝试将“\n”替换为“\\n”