将包装文本拆分为数组

时间:2013-09-08 12:41:07

标签: c# vb.net

我想在文本换行给定宽度

的位置将一个字符串拆分成一个数组

假设这是字符串。 我希望文字宽度为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

1 个答案:

答案 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;
}

基本上,您的输入字符串被分成组成单词,然后使用图形对象和参考字体测量每个单词。如果当前单词的长度加上前面的单词小于所需的长度,则该单词将重新连接在一起。否则,结果字符串将添加到要返回给调用者的字符串列表中。