必須有更好的方法才能做到這一點。 我只是想將長字符串分成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