2016-03-30 6 views
0

文字列を一定の長さに分割したいが、それも完全な単語であることを確認したい。条件を追加して文字列を長さで分割する

string str = "Hello I have a dog "; 

をし、私は私が(私はSplit String into smaller Strings by length variableから得た)このような何かをするだろう5のチャンクにそれを分割したい:例えば、私が持っていた場合

public IEnumerable<string> SplitByLength(string s, int length) 
{ 
    for (int i = 0; i < s.Length; i += length) 
    { 
     if (i + length <= s.Length) 
     { 
      yield return s.Substring(i, length); 
     } 
     else 
     { 
      yield return s.Substring(i); 
     } 
    } 
} 

それがつながりますそれは5の後、または空白の後に分割なるように、どのように私はそれを適応させることができ

"Hello" 
"I Hav" 
"e a d" 
"og" 

のような出力で?だから私はなるだろう:

"Hello" 
"I" 
"Have" 

それは最良の例ではないのですが、それは私が私の頭の上オフを思い付くことが最高です。私が必要とするのは、ウェブページに結果を表示しているのですが、一定量の単語の後には、背景画像のために読みにくくなるので、限界に達するとラインが壊れますが、 1行に半分の単語を、次の行に残りの半分が必要です。

+0

は、スペースの後にそれらを分割しますか?スペースが分かれている部分が見つかります – Haris

+1

なぜ 's.Split( '');'? – Guy

+4

あなたの問題がWebページ上のテキストプレゼンテーションである場合、異なるスクリーンサイズなどが発生するため、テキストを分割する代わりにHTML/CSSを調べる必要があります。 –

答えて

0

あなたが使用する必要があります

/他の場合
   if (i + length <= s.Length) 
       { 
        yield return s.Substring(i, length); 
       } 
       else if(s[i] == ' ') 
       { 
        yield return s.Substring(i, s.IndexOf(" ",i) - i); 
       } 
       else 
       { 
        yield return s.Substring(i); 
       } 
関連する問題