2

287文字の長さのメッセージがあります。160 文字の後に 2 つに分割する必要がありますが、私のコードは引き続き機能しません。私は非常に多くのことをグーグルで検索し、さまざまなソリューションを試しましたが、期待どおりに機能していません。私の頭の中では、これは単純な解決策ですが、実際には悪夢に悩まされています。

// 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);

ただし、上記は単に機能しません-2番目の部分文字列で例外エラーが発生します。

誰でも助けることができますか?メッセージが 320 文字を超えることはありません。

4

6 に答える 6

7

String.Substringは最初のパラメーターから始まり、2 番目のパラメーターの長さを持ちます。2 番目のパラメーターとして渡しmessage.Lengthましたが、機能しません。

1 つのパラメーター(最初から最後まで)だけでオーバーロードを使用できます。

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

startIndexArgumentOutOfRangeException が 0 より小さいか、文字列の長さより大きい場合に をスローします。

デモ: http://ideone.com/ZN2BlM

于 2012-10-25T08:45:36.347 に答える
6

2行目には

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);

2 つの引数部分文字列の使用については、こちらを参照してください。

于 2012-10-25T08:44:28.717 に答える
1

Substring メソッドの 2 番目のパラメーターは、_message から取得する数値または文字を受け取ります。代わりにこれを行います:

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

C# の部分文字列メソッド

于 2012-10-25T08:49:50.027 に答える
1

length パラメーターを使用せず、文字列の末尾に移動するだけの String.Substring関数のオーバーロードがあります。この方法でコードを単純化できます。

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

http://msdn.microsoft.com/en-us/library/aa904308(v=vs.71).aspxによると、関数には次のフットプリントがあります: substring (int start) または substring(int start, int length)

あなたがそれを呼んでいる方法を意味します: 位置 160 からコピーを開始し、文字列の全長を続行します。したがって、文字列の長さが 287 文字の場合は、

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

161 の位置からコピーを開始し、次の 287 文字まで続けます。その場合、文字列は 161 + 287 文字でなければならず、これがエラーの原因です。

使用する必要があります:

文字列_メッセージ;
_message = "これは私の長いメッセージで、160 文字の後に 2 つの文字列に分割する必要があります。これは長いメッセージです。これは長いメッセージです。これは長いメッセージです。これは長いメッセージです。これは長いメッセージです."; string message1 = _message.Substring(0,160);
string message2 = _message.Substring(message1.Length, _message.Length - message1.Length);

これにより、メッセージの長さは 287 - 160 = 127 になります。

于 2012-10-25T08:52:59.340 に答える