【发布时间】:2016-03-30 10:49:08
【问题描述】:
我想将一个字符串分割成一定的长度,但我也想确保它是一个完整的单词。例如,如果我有:
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"
这不是最好的例子,但它是我能想到的最好的例子。我需要它的原因是我在网页上显示结果,并且在一定数量的单词之后,由于背景图像而难以阅读,所以当它达到限制时它会换行但我没有'不希望半个单词在一行,另一半在下一行。
【问题讨论】:
-
在空格后分割它们?所以你在哪里找到空间分割
-
为什么不
s.Split(' ');? -
如果您的问题是网页上的文本呈现,那么您应该研究 HTML/CSS 而不是拆分文本,因为不同的屏幕尺寸等会发生什么?
-
听起来您正试图在网页上手动换行。已经有很多方法可以做到这一点,而无需拆分字符串。正如@AllanS.Hansen 所说,最好的办法是研究 HTML / CSS。还有各种库,例如 Bootstrap 3。
-
你的要求没有意义,如果你需要在最后换行;我希望您希望在某个字符串长度之前的 last 空格处中断。但正如@Allan 所写,我怀疑您是否应该以编程方式执行此操作,自动换行应该在 HTML/CSS 中完成。