0

我想在给定宽度的文本换行处将字符串拆分为数组

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

4

1 回答 1

1

这里有一个答案(请归功于谁值得)

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

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

于 2013-09-08T12:55:49.753 回答