我想将字符串拆分一定长度,但我也想确保它是一个完整的单词。例如,如果我有:
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 :(得分: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);
}