C# 换行符不计算为字符串长度的2个字符

C# 换行符不计算为字符串长度的2个字符,c#,C#,我想知道为什么在确定C#中字符串的长度时\n不算作2个字符 例: 这是一个测试注释\n示例文本测试123456\nadsss\n\nasdasda\nasdadada\nasadad\nasadad\nasada\n\n最后一段\n12345\n测试 上面的字符串包含136个字符,但我存储该字符串的字符串对象的Length属性\n计数为1个chartacter,并报告长度为124个字符的字符串 我想根据预先计算的开始和长度标记提取一个子字符串。标记被创建为\n两个字符。 在C语言中,我如何做以下

我想知道为什么在确定C#中字符串的长度时\n不算作2个字符

例: 这是一个测试注释\n示例文本测试123456\nadsss\n\nasdasda\nasdadada\nasadad\nasadad\nasada\n\n最后一段\n12345\n测试

上面的字符串包含136个字符,但我存储该字符串的字符串对象的Length属性\n计数为1个chartacter,并报告长度为124个字符的字符串

我想根据预先计算的开始和长度标记提取一个子字符串。标记被创建为\n两个字符。 在C语言中,我如何做以下等价的事情#


我不能使用减字符串,因为我的长度偏移量136超出了字符串的c#表示的边界。

它不减字符,只将一个换行符计算为一个字符,这是正确的。

字符串。长度不包括换行符:

string test = "1234\n6789\n\nC";

Console.WriteLine(test);
Console.WriteLine("Length: {0}", test.Length);
输出:

1234
6789
C
长度:12
您可能缺少的是
'\n'
是一个字符。它表示换行符(
LF
)。字符串文字中的反斜杠表示它是一个字符串

因此,即使您数136个字符,
\n
在编译时也会被替换为一个换行符


注意,取决于该字符串正在使用的位置,您可能需要考虑使用而不是<代码> \n < /代码>。Windows上的真正换行符是

“\r\n”
,或
CR LF
。虽然许多控件等将处理
\n
很好,但文件和其他内容可能需要
\r\n

string test = "Welcome to" + Environment.NewLine + "StackOverflow!";

您不需要计算
“\”
它的作用是告诉系统右边的字符是“特殊”字符。在您的情况下,它恰好是一个换行符
\n
。它也可以是一个选项卡
\t
,回车
\r
。。。
因此,数学是正确的。

如果您的字面意思是
\n
(反斜杠和“n”,而不是换行符),则需要使用逐字字符串或
\\n
。字符串是从html文本区域创建的,因此\n字符存储在DB+1中。更明显的可能是检查
“\n”.Length
是1,而
Environment.NewLine.Length
是2。
string test = "Welcome to" + Environment.NewLine + "StackOverflow!";