C# 换行符不计算为字符串长度的2个字符
我想知道为什么在确定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# 换行符不计算为字符串长度的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语言中,我如何做以下
我不能使用减字符串,因为我的长度偏移量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!";