2

我有一条消息说 287 个字符长。我需要在 160 个字符后将其分成两部分,但我的代码仍然无法正常工作。我用谷歌搜索了很多,尝试了很多不同的解决方案,但没有什么能像我预期的那样工作。在我看来,这是一个简单的解决方案,但实际上它让我做噩梦!

// a check is done to ensure the message is > 160 in length.    
string _message;
_message = "this is my long message which needs to be split in to two string after 160 characters. This is a long message. This is a long message. This is a long message. This is a long message. This is a long message.";

string message1 = _message.Substring(0,160);
string message2 = _message.Substring(161,_message.Length);

上面的内容根本不起作用 - 在第二个子字符串上给我一个异常错误。

任何人都可以帮忙吗?消息永远不会超过 320 个字符。

4

6 回答 6

7

String.Substring确实从第一个参数开始,并且具有第二个参数的长度。您已message.Length作为第二个参数传递,这是行不通的。

您可以仅使用一个参数(从头到尾)使用重载:

string firstPart = _message.Substring(0,160);
string rest = _message.Substring(160);

ArgumentOutOfRangeException 如果 startIndex 小于零或大于字符串的长度,则抛出一个。

演示:http: //ideone.com/ZN2BlM

于 2012-10-25T08:45:36.347 回答
6

对于第二行,只需使用

string message2 = _message.Substring(160);

如果你的字符串可能少于 160 个字符,你应该检查一下。

于 2012-10-25T08:45:24.110 回答
4
string message1 = _message.Substring(0,160);
string message2 = _message.Substring(160,_message.Length - 160);

有关使用两个参数子字符串的信息,请参阅

于 2012-10-25T08:44:28.717 回答
1

String.Substring 函数有一个重载,它不带长度参数,而只是转到字符串的末尾。您可以通过这种方式简化代码:

string message1 = _message.Substring(0,160);
string message2 = _message.Substring(160);
于 2012-10-25T08:46:21.490 回答
1

Substring 方法的第二个参数接收要从_message 中获取的数字或字符。而是这样做:

string message1 = _message.Substring(0,160);
string message2 = _message.Substring(160,_message.Length-160);

C#中的子字符串方法

于 2012-10-25T08:49:50.027 回答
0

根据http://msdn.microsoft.com/en-us/library/aa904308(v=vs.71).aspx,该函数具有以下足迹: substring (int start) 或 substring(int start, int length)

意思是你调用它的方式:从位置 160 开始复制,并继续字符串的总长度。因此,如果您的字符串长度为 287 个字符,那么您就是在使用

字符串 message2 = _message.Substring(161,_message.Length);

从位置 161 开始复制,然后继续复制以下 287 个字符。在这种情况下,字符串必须是 161 + 287 个字符,这是导致错误的原因。

你应该使用:

字符串_消息;
_message = "这是我的长消息,需要在160个字符后分成两个字符串。这是一条长消息。这是一条长消息。这是一条长消息。这是一条长消息。这是一条长消息."; 字符串 message1 = _message.Substring(0,160);
字符串 message2 = _message.Substring(message1.Length, _message.Length - message1.Length);

这将导致消息的长度为 287 - 160 = 127 。

于 2012-10-25T08:52:59.340 回答