【问题标题】:How to use \ in a string in C#C#中如何在字符串中使用\
【发布时间】:2010-03-26 19:31:03
【问题描述】:

我想在字符串中使用\,比如

string str="abc\xyz";

但这给了我错误。

我也试过

string str="abc\\xyz";

但它仍然无法正常工作。 谁能帮帮我?

【问题讨论】:

  • (我同意所有答案,但是)第二次尝试的结果是什么(应该可以),你期待什么?
  • 这肯定行得通 - 如果您仍然有问题,请发布一个 sn-p - 也许它不是该特定行。
  • 第二个例子不应该只是string str = "abc\\xyz" - 即只有两个反斜杠吗?拥有三个会给出“无法识别的转义序列”
  • @Timores - 第二个结果不应该工作;有三个反斜杠导致 \\ 和 \xyz - 因为 \xyz 不是有效的十六进制,编译器将拒绝它。

标签: c#


【解决方案1】:

您可以转义字符,如下所示:

string str="abc\\xyz";

或像这样使用逐字字符串文字:

string str=@"abc\xyz";

所以你的第二个例子应该可以工作。

更多信息请参见here

【讨论】:

  • 仅供参考,后者称为verbatim string literal
  • 对一个 9 岁的答案投了赞成票。我喜欢这个地方。
【解决方案2】:

好吧,后者 ("abc\\xyz") 肯定会在字符串中产生反斜杠 - 或者您可以使用 逐字字符串文字

string str = @"abc\xyz";

请注意,如果您使用调试器查看字符串,它通常会(总是?)为您“转义”它们,因此您会看到"abc\\xyz"。这可能会引起相当大的混乱。要么单独查看字符,要么将字符串打印到控制台。

你还没有说它“不起作用”的方式 - 你能提供更多细节吗?如果它只是调试器输出,那么以上内容可能就是您要查找的全部内容 - 但否则您应该告诉我们您看到的内容与预期看到的内容。

查看我的article about strings,了解有关一般字符串、转义、调试器等的更多信息。

【讨论】:

  • 是的。在调试时,我看到 abc\\xyz 当我使用 @"abc\xyz"。
  • 因此我无法在我的代码中做任何进一步的事情。
  • @Brigadier:但这是正确的数据。为什么调试器向您显示正确的数据,但作为逐字字符串文字使您“无法在 [您的] 代码中做任何进一步的事情”?实际上是什么阻止你继续?除了看到逐字字符串文字格式的字符串之外,您还得到了哪些意想不到的结果?
  • 我正在从 abc\xyz 中提取 \ 之后的子字符串,即我想要 xyz。但是通过写 string str=@"abc\xyz" 我得到 \xyz.
  • @Brigadier:然后你提取子字符串的代码被破坏了。我怀疑您缺少“+1”。
【解决方案3】:
string str="abc\\xyz";

通常,这应该有效。另一种选择是:

string str = @"abc\xyz";

【讨论】:

    【解决方案4】:
    public class Program
    {
        static void Main(string[] args)
        {
            string str = "abc\\xyz";
            Console.WriteLine(str);
        }
    }
    

    这很好用。它打印abc\xyz

    【讨论】:

      【解决方案5】:

      你可以这样做

      string str = @"abc\xyz";
      

      【讨论】:

        【解决方案6】:
        string str = @"abc\xyz";
        

        【讨论】:

          【解决方案7】:

          你可以这样做:

          string str = @"abc\xyz";
          

          这表明斜线很重要,而不是转义字符。

          【讨论】:

            【解决方案8】:

            您需要在字符串前面加上“@”符号,以阻止编译器将其视为转义序列。所以string str = @"abc\xyz"; 应该可以工作。

            【讨论】:

              猜你喜欢
              • 2010-12-05
              • 2011-07-26
              • 2018-07-27
              • 2020-11-27
              • 2020-10-01
              • 2011-06-23
              • 2012-05-27
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多