2017-02-23 8 views
-2

こんにちは私は25単語と300文字を含む文字列の段落を持っています、私は40文字を含むことができるラベルのセットでそれを設定したい。私は文字の長さの下のコードとしてそれを試しています。文字列をCで長さ変数に分割する

public static List<string> _mSplitByLength(this string str, int maxLength) 
{ 
    List<string> _a = new List<string>(); 
    for (int index = 0; index < str.Length; index += maxLength) 
    { 
     _a.Add(str.Substring(index, Math.Min(maxLength, str.Length - index))); 
    } 
    return _a; 
} 

上記のコードでは、文字列を40文字に分割できますが、問題はそれも単語を分割することです。

は私の文字列が私のコードのこの

list 1 = "My school Name is stack over flow High s" 
list 2 = "chool." 

私の質問のようになってでて46文字で言葉に基づいて文字列を分割する方法です"My school Name is stack over flow High school."であると仮定します。最後の単語が来ていない場合は、次のリストに転送する必要があります。

私の目的は、これを試してみてください

list 1 = "My school Name is stack over flow High " 
list 2 = "school." 

答えて

2

です:

string text = "My school Name is stack over flow High school."; 
List<string> lines = 
    text 
     .Split(' ') 
     .Aggregate(new [] { "" }.ToList(), (a, x) => 
     { 
      var last = a[a.Count - 1]; 
      if ((last + " " + x).Length > 40) 
      { 
       a.Add(x); 
      } 
      else 
      { 
       a[a.Count - 1] = (last + " " + x).Trim(); 
      } 
      return a; 
     }); 

私はこれを取得:

 
My school Name is stack over flow High 
school. 
関連する問題