必须有更好的方法才能做到这一点。 我只是想将长字符串分成60个字符行,但不要打破单词。所以它不需要加起来60个字符只需少于60.将长长的字符串分成60个字符长的字符串,但不要打破单词
下面的代码是我有,它的工作原理,但我认为有一个更好的方法。任何人?
修改为使用StringBuilder并修复了删除重复单词的问题。 也不想使用正则表达式,因为我认为这会比现在低效。
public static List<String> FormatMe(String Message)
{
Int32 MAX_WIDTH = 60;
List<String> Line = new List<String>();
String[] Words;
Message = Message.Trim();
Words = Message.Split(" ".ToCharArray());
StringBuilder s = new StringBuilder();
foreach (String Word in Words)
{
s.Append(Word + " ");
if (s.Length > MAX_WIDTH)
{
s.Replace(Word, "", 0, s.Length - Word.Length);
Line.Add(s.ToString().Trim());
s = new StringBuilder(Word + " ");
}
}
if (s.Length > 0)
Line.Add(s.ToString().Trim());
return Line;
}
感谢
您是在寻找一种更高效的算法或更多的下一个编码器来阅读这种友好的方法吗? – Nate 2009-11-05 03:04:46
你没有使用泛型的原因? – Nate 2009-11-05 03:07:44
1.您的代码无法按预期工作。 s.Replace(Word,“”)不仅会替换最后一个,而且还会替换字符串中Word的任何部分匹配。 2. s + = ...您将最终创建太多临时字符串对象,因为字符串在C#中是不可变的。尝试使用stringbuilder或string.Join()方法。 – 2009-11-05 04:31:47