【问题标题】:How to concatenate string with a backslash with another string如何将带有反斜杠的字符串与另一个字符串连接起来
【发布时间】:2013-11-14 20:41:45
【问题描述】:

如何将字符串"\u""a string" 连接以获得“\u0000”?

我的代码创建了两个反斜杠:

string a = @"\u" + "0000";  //ends up being "\\\u0000";

【问题讨论】:

  • 你使用什么语言?
  • 我使用的是c#语言
  • 我想在另一个字符串中搜索一个字符串:if (code2.StartsWith(@"\u" + strUnicodeOfMiddleChar) == true)
  • 你需要像这样转义字符:string a = "\\u" + "0000";Character escapes.
  • 您对a 的期望结果是什么?

标签: c# join backslash


【解决方案1】:

转义序列\uXXXX 是语言语法的一部分,表示单个Unicode 字符。相比之下,@"\u""0000" 是两个不同的字符串,共有六个字符。连接它们不会神奇地将它们变成单个 Unicode 转义。 如果您尝试将 Unicode 代码点转换为单字符串,请执行以下操作:

char.ConvertFromUtf32(strUnicodeOfMiddleChar).ToString()

顺便说一句,不要使用== true;这是多余的。

【讨论】:

  • 所以你的检查变成: if (code2.StartsWith(char.ConvertFromUtf32(0000))) { /* 你的操作 */ }
【解决方案2】:

如果我理解正确,我认为您想从任意 Unicode 值(4 个十六进制数字)构建一个单字符字符串。因此,给定字符串“0000”,您希望将其转换为字符串“\u0000”,即包含单个字符的字符串。

我想这就是你想要的:

string  f = "0000";    // Or whatever
int     n = int.Parse(f, NumberStyles.AllowHexSpecifier);
string  s = ((char) n).ToString();

生成的字符串s"\u0000",然后您可以将其用于搜索。

(Thomas Levesque 建议更正。)

【讨论】:

    【解决方案3】:

    下面的行创建了两个反斜杠:

    string a = @"\u" + "0000"; //a ends up being "\\u0000";
    

    不,它没有;调试器将“\”显示为“\”,因为这是您在 C# 中编写反斜杠的方式(当您不使用 @ 为字符串添加前缀时)。如果您打印该字符串,您将看到\u0000,而不是\\u0000

    【讨论】:

      【解决方案4】:

      不,那个字符串真的有一个反斜杠。把它打印到控制台,你会看到的。

      【讨论】:

        【解决方案5】:

        Escape你的角色正确!!

        两者:

        // I am an escaped '\'.   
        string a = "\\u" + "0000";
        

        还有:

        // I am a literal string.
        string a = @"\u" + "0000";
        

        会工作得很好。但是,我要在这里冒险了,我猜你正试图转义一个 Unicode 字符和十六进制值,所以,要做到这一点,你需要:

        // I am an escaped Unicode Sequence with a Hex value.
        char a = '\uxxxx';
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-23
          • 2020-08-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多