按长度拆分字符串并添加条件

时间:2016-03-30 10:49:09

标签: c# string

我想将字符串拆分一定长度,但我也想确保它是一个完整的单词。例如,如果我有:

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"

这不是最好的例子,但它是我能想到的最好的例子。我需要它的原因是我在网页上显示结果,并且在一定数量的单词之后,由于背景图像而难以阅读,所以当它达到极限时它会打破一条线但我不喜欢不希望在一行上有一半的单词,而在下一行上需要另一半。

1 个答案:

答案 0 :(得分: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);
                }