我想知道为什么\ n在确定C#中的字符串长度时不算作2个字符
EX: 这是一个测试评论\ nSample text test 123456 \ nadssssssssss \ n \ nasdasdasda \ nasdadadadad \ nasadad \ nasada \ n \ n \ nLast paragraph \ n12345 \ nTest
上面的字符串包含136个字符,但是String对象的Length属性我将字符串存储在count \ n中作为1个chartacter,并将字符串报告为124个字符长。
我想根据预先计算的start和lenght标记提取子字符串。创建标记计数为两个字符。 我怎样才能在C#
中完成以下等效操作select SUBSTRING('This is a test comment\nSample text test 123456\nadssssssssss\n\nasdasdasda\nasdadadadad\nasadad\nasada\n\n\nLast paragraph\n12345\nTest',1,136);
我不能使用子字符串,因为我的长度偏移量136超出了字符串的c#表示的边界。
答案 0 :(得分:9)
String.Length
包含换行符:
string test = "1234\n6789\n\nC";
Console.WriteLine(test);
Console.WriteLine("Length: {0}", test.Length);
输出:
1234
6789
C
Length: 12
您可能缺少的是'\n'
是一个字符。它代表换行符(LF
)。字符串文字中的反斜杠表示它是Escape Sequence。
因此,即使你计算了136个字符,\n
在编译时也会替换为一个换行符。
注意,根据此字符串的使用位置,您可能需要考虑使用Environment.NewLine
而不是\n
。 Windows上的 true 换行符为"\r\n"
或CR LF
。虽然许多控件等都可以处理\n
罚款,但文件和其他内容可能需要\r\n
。
string test = "Welcome to" + Environment.NewLine + "StackOverflow!";
答案 1 :(得分:1)
它不会减去\ n字符,它只计算一个换行符\ n作为一个字符,这是正确的。
答案 2 :(得分:1)
你不计算'\'
它告诉系统右边的字符是'Special'。在你的情况下,恰好是换行符\n
。它也可以是标签\t
,回车\r
......
所以数学是正确的。