2016-03-30 54 views
0

我想按特定長度拆分字符串,但我也想確保它是完整的單詞。舉例來說,如果我有:根據添加條件按長度拆分字符串

string str = "Hello I have a dog "; 

,我想它分割成5塊,我會做這樣的事情(這是我從Split String into smaller Strings by length variable了):

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

但是這將導致在輸出像

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

我怎麼能適應它,以便它會分裂後5或空白?所以我會得到:

"Hello" 
"I" 
"Have" 

這不是最好的例子,但它是最好的,我可以拿出我的頭頂。我需要它的原因是我在網頁上顯示結果,並且經過一定量的單詞後,由於背景圖像而難以閱讀,因此當它達到極限時,它會打破一條線,但我不會在一行中不要半字,在下一行中要半字。

+0

後空格它們分割?所以你在哪裏找到空間分割 – Haris

+1

爲什麼不能分割('');'? – Guy

+4

如果你的問題是在網頁上的文字呈現,那麼你應該看看HTML/CSS而不是分裂你的文字,因爲不同的屏幕尺寸會發生什麼? –

回答

0

您應該使用的if/else

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