1

Twitter メッセージを処理する必要があるアプリケーションを作成しています。文字列を 30 文字に切り詰める機能が必要です。30 インデックスの文字がスペースでない場合は、スペースが見つかるまでカウントバックし、複数行として表示されるように \n を追加します私のアプリケーションで。

いくつかのアプローチを試しましたが、C# に関する私の知識はまだそれほど驚くべきものではありません。基本的なことができました。

string[] stringParts = new string[5];
string temp = jsonData["results"][i]["text"].ToString();
int length = 30;

for(int count = length-1; count >= 0; count--)
{
    if(temp[count].Equals(" "))
    {
        Debug.Log(temp[count]);
    } 
}

Split を使用して結果を配列に追加すると考えましたが、機能していないようです。

4

3 に答える 3

8

より良いアプローチは、スペースで分割し、30 文字未満の配列行を再構築することです。

これを行う方法の概要は次のとおりです(テストされていません):

string[] words = myString.Split(' ');
StringBuilder sb = new StringBuilder();
int currLength = 0;
foreach(string word in words)
{
    if(currLength + word.Length + 1 < 30) // +1 accounts for adding a space
    {
      sb.AppendFormat(" {0}", word);
      currLength = (sb.Length % 30);
    }
    else
    {
      sb.AppendFormat("{0}{1}", Environment.NewLine, word);
      currLength = 0;
    }
}
于 2011-04-06T21:31:17.373 に答える
0

正規表現を使用して、空白ブロックの最後の位置と、それに続く最初の非空白文字の位置を決定します。

于 2011-04-06T21:32:19.693 に答える