【问题标题】:Is it possible to enter a New Line in a string without Escape Sequences?是否可以在没有转义序列的情况下在字符串中输入换行符?
【发布时间】:2013-08-12 15:47:57
【问题描述】:

我希望String 中有一个New Line,但我不能使用转义序列,因为我将字符串发送到的接口无法识别它们。据我所知,C# 实际上并没有在String 中存储New Line,而是存储了转义序列,导致传递的是文字内容,而不是它们的实际含义。

我最好的猜测是我必须以某种方式将数字 10(根据New Line 的十进制值ASCII table)解析为 ASCII。但我不确定该怎么做,因为如果尝试这样做,C# 会将数字直接解析为 String

"hello" + 10 + "world"

有什么建议吗?

【问题讨论】:

  • 你用的是什么接口?您可能需要编写在 C# 字符串和字符串的其他系统解释之间进行转换的方法,以及它们如何处理换行符。苹果和橙子等等!
  • 你能描述一下接口以及你是如何向它发送字符串的吗?
  • 这是我公司为运动控制编写的语言,我正在使用我们拥有的 .NET 库和 NUNIT 为其编写测试。我只是传递字符串,然后作为命令读入。本质上,我想在这个界面中设置一个字符串变量,然后检索它,通过检测换行符来确保字符串没有被截断
  • 那你为什么要向它发送换行符?是否需要他们执行命令?您需要发送换行符吗?
  • 再说一遍:定义它想要什么。您提出了 ASCII 10,它在 C# 中翻译为 \nEnvironment.NewLine。所以我假设这是你真正想要的 C++ 风格\r\n...由 ASCII 13 和 10 组成的一对。

标签: c# string escaping ascii


【解决方案1】:

如果你说"hello\nworld",实际的字符串将包含:

hello
world

字符串中会有一个实际的换行符。字符 \n 绝不会存储在字符串中。

有几种方法可以获得完全相同的结果,但字符串中的简单\n 是一种常见的方法。

一个简单的演员也应该这样做:

"hello" + (char)10 + "world"

虽然由于字符串连接可能会稍微慢一些。我说“可能”是因为它可能会被优化掉,或者使用\n 的实际示例也会导致字符串连接,花费大致相同的时间。

Test.

【讨论】:

  • 这个可以确认吗?如果那是真的,那么我的问题就没有意义了,仅从通过的内容来看,似乎\n\ was being passed, and not a new line`
  • @Nealon 您看到的是调试表示。它只是视觉上的。如前所述,字符串在内存中。
  • 我会尝试自己确认以确保它正常工作,如果是这样,这就是我需要了解的全部内容,谢谢
【解决方案2】:

首选的换行符是Environment.NewLine,因为它具有跨平台功能。

【讨论】:

    【解决方案3】:

    你可以使用xml进行通信,如果你是接收者可以处理这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      相关资源
      最近更新 更多