>如果文本长度超过了新行中的32个字符.
>如果可能的话,用完整的单词分割,不带连字符( – ).
到目前为止,我已达到以下代码:
private voID Form1_Load(object sender,EventArgs e) { string strtext = "This is a very long text. this will come in one line.This is a very long text. this will come in one line."; if (strtext.Length > 32) { IEnumerable<string> strEnum = Split(strtext,32); label1.Text =string.Join("-\n",strEnum); } } static IEnumerable<string> Split(string str,int chunkSize) { return Enumerable.Range(0,str.Length / chunkSize) .Select(i => str.Substring(i * chunkSize,chunkSize)); }
但问题是最后一行没有完全显示,因为它分裂了32个字符.
还有另一种方法来实现这一目标吗?
解决方法 我不知道你是否会接受不使用linq的答案,但这很简单:string SplitOnWholeWord(string toSplit,int maxlineLength){ StringBuilder sb = new StringBuilder(); string[] parts = toSplit.Split(); string line = string.Empty; foreach(string s in parts) { if(s.Length > 32) { string p = s; while(p.Length > 32) { int addedChars = 32 - line.Length; line = string.Join(" ",line,p.Substring(0,addedChars)); sb.Appendline(line); p = p.Substring(addedChars); line = string.Empty; } line = p; } else { if(line.Length + s.Length > maxlineLength) { sb.Appendline(line); line = string.Empty; } line = (line.Length > 0 ? string.Join(" ",s) : s); } } sb.Append(line.Trim()); return sb.ToString();}
打电话给
string result = SplitOnWholeWord(strtext,32);
可以轻松地在扩展方法中对其进行转换:
将上面的代码放在一个单独的文件中并创建一个静态类
public static class StringExtensions{ public static string SplitOnWholeWord(this string toSplit,int maxlineLength) { // same code as above..... }}
并以这种方式调用它:
string result = strtext.SplitOnWholeWord(32);总结
以上是内存溢出为你收集整理的在c#中的标签中显示全文全部内容,希望文章能够帮你解决在c#中的标签中显示全文所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)