【问题标题】:Problem with escape character转义字符的问题
【发布时间】:2010-11-01 14:30:49
【问题描述】:

我有一个字符串变量。它包含文本:

\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n

当我尝试将它添加到 TextBox 控件时,没有任何反应。因为 \0 表示 END。

如何按原样添加文本?​​

更新: 文本动态放置在变量中。因此,@不适合。

【问题讨论】:

  • 你想在文本框中看到什么?
  • 这个:\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n

标签: c# escaping


【解决方案1】:

你想显示反斜杠的想法是什么?如果是这样,反斜杠将需要在原始字符串中。

如果您从字符串文字中获取该文本,只需将其设为verbatim string literal

string text = @"\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n";

如果想要传入一个 真正 包含 Unicode“nul”字符 (U+0000) 的字符串,那么您将无法让 Windows 显示它。您应该先删除这些字符:

textBox.Text = value.Replace("\0", "");

【讨论】:

    【解决方案2】:
    "\\0#«Ия\\0ьw7к\\b\\0E\\0њI\\0\\0ЂЪ\\n"
    

    @"\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n"
    

    【讨论】:

    • 文本动态放置在变量中。
    • 给出一些代码上下文。你如何得到包含这些字符的字符串?我们可以复制它吗?
    • @user348173:这个文本来自哪里?
    • 这是文本中十六进制数据的翻译。可能有浪费(如上)和正常文本。
    • 啊,你想把你的二进制数据转换成一个等效的 ASCII 符号的字符串。
    【解决方案3】:

    好吧,我不知道你的文字来自哪里,但如果你必须,你可以使用

    using System.Text.RegularExpressions;
    
    ...
    
    string escapedText = RegEx.Escape(originalText);
    

    但是,如果不够快,字符串将已经包含空字符。

    【讨论】:

      【解决方案4】:

      它包含文本:

      \0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n

      不,它没有。这就是调试器告诉你它包含的内容。调试器会自动格式化内容,就像您在源代码中将其编写为文字值一样。该字符串实际上并不包含反斜杠,它们是由调试器格式化程序添加的。

      字符串实际上包含二进制零。您可以使用 string.ToCharArray() 自己查看。你不能按原样显示这个字符串,你必须去掉零。例如,以十六进制显示内容可能会起作用,BitConverter.ToString(byte[]) 可以帮助解决这个问题。

      【讨论】:

        【解决方案5】:

        你不能。
        标准 Windows 控件不能显示空字符。

        如果您尝试显示文字文本 \0,请将字符串更改为以 @ 符号开头,这会告诉编译器不要解析转义序列。 (@\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n")

        如果您想尽可能多地显示字符串,可以去掉空值,如下所示:

        textBox.Text = someString.Replace("\0", "");
        

        你也可以用转义码替换它们:

        textBox.Text = someString.Replace("\0", @"\0");
        

        【讨论】:

          【解决方案6】:

          您可以尝试转义 \0 中的反斜杠,即 \\0。有关 C# 转义序列的完整列表,请参阅 this MSDN reference

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-31
            • 1970-01-01
            • 1970-01-01
            • 2020-01-27
            相关资源
            最近更新 更多