我想在文本换行给定宽度
的位置将一个字符串拆分成一个数组假设这是字符串。 我希望文字宽度为300:
I want to split a string into an array at a point where the text wraps for a given width
并使用一个函数,如下所示:
Text.SplitAtWrap(300,Text)
这是我想要的输出:
(0) I want to split a string into an
(1) array at a point where the text
(2) wraps for a given width
编辑:
我可能不得不考虑字体,所以可能必须使用Drawing.Graphics
。
答案 0 :(得分:1)
There is an answer here(请相信应得的人)
public List<string> GetSubstrings(string toSplit, int maxLength, Graphics graph, Font font)
{
List<string> substrings = new List<string>();
string[] words = toSplit.Split(" ".ToCharArray());
string oneSub = "";
foreach (string oneWord in words)
{
string temp = oneSub + oneWord + " ";
if (graph.MeasureString( temp, font).Width > maxLength)
{
substrings.Add(oneSub);
oneSub = oneWord + " ";
}
else
oneSub = temp;
}
substrings.Add(oneSub);
return substrings;
}
基本上,您的输入字符串被分成组成单词,然后使用图形对象和参考字体测量每个单词。如果当前单词的长度加上前面的单词小于所需的长度,则该单词将重新连接在一起。否则,结果字符串将添加到要返回给调用者的字符串列表中。