我想知道为什么在确定c中字符串的长度时不将\n计算为2个字符#
前任:
这是测试注释\n示例文本测试123456
上面的字符串包含136个字符,但我存储字符串的string对象的length属性将其计数为1 chartactor,并将该字符串报告为124个字符长。
我想提取一个子串基于预先计算的开始和长度标记。标记是以两个字符计数创建的。
我怎么能在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表示的边界。
最佳答案
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上真正的换行符是"\r\n"
或CR LF
。虽然许多控件等都可以很好地处理\n
,但文件和其他东西可能会\r\n
。string test = "Welcome to" + Environment.NewLine + "StackOverflow!";
关于c# - 换行符不算为字符串长度的2个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13484282/