Asp.net String.Length计算返回为2个字符?

时间:2011-11-11 11:43:24

标签: c# asp.net string

我正在计算来自文本框的消息的字符,该文本框将作为短信发送, 我注意到txtBody.Text.Length正在为返回计算更多的字符,理解我想保持换行符的格式但.net正在计算2个字符,因为这是有任何方法来保持新行但得到计数器准确或是一个返回本身2个字符???

3 个答案:

答案 0 :(得分:7)

Windows中的换行确实是2个字符 - CrLf - ASCII 13后跟ASCII 10。

您可以简单地从返回的Length递减2,或者获得所有Environment.NewLine的计数,将其加倍,然后从Length递减。

答案 1 :(得分:2)

每当用户输入一个新行(禁止一些相对奇怪的复制粘贴)时,

文本框输入将为您提供Environment.Newline,这在Windows上与"\u000D\u000A"相同(或更短{{1}这意味着同样的事情。)

对于短信发送,您只需要使用U + 000A。

因此,在进行任何进一步的工作之前,您只需执行"\r\n"即可。你不仅可以获得你想要的长度结果,而且还可以减少短信不需要的浪费字符,而且当涉及到短信时,每个字符都很重要,而hri hrlbl nnsens喜欢dis!

您可以进一步将msg.Replace("\r\n", "\n")进一步规范化,以便使用非Windows正常换行符(在某些情况下确实会发生),使用奇怪的复制粘贴数据更有意义。

请注意,如果你不能保持在GSM 7位字母表中,你将会遇到更多复杂问题,但是如果你不能保持在8位之内,那么至少你的并发症将会相互匹配。 NET和SMS;因为.NET使用UTF-16而SMS在其他编码不够时就会这样做,所以就长度而言,它们会对代理进行相同的处理。

答案 2 :(得分:0)

string msg = "bla bla etc.\r\nSome more bla";
int length = msg.Replace("\r\n","").Length;