2012-07-26 18 views
3

我發現的大多數wordwrap函數都綁定到css和/或瀏覽器dom。 我正在JavaScript環境(犀牛)中工作,需要找到或設計一個更好的單詞包裝,在給定的行長度值之前打破空白。 我現在的解決方案只是搜索給定字符前的最後一個空格,然後剪切左側,將其存儲爲一行輸出(在數組中返回)。重複,直到沒有更多的文字。空白的Javascript-only wordwrap函數?

希望有人看到優雅的東西。

+0

沒有託管在瀏覽器中。 – 2012-07-26 18:27:03

回答

4

你可以寫類似:

var wordwrapped = original.trim().replace(/(\S(.{0,78}\S)?)\s+/g, '$1\n'); 

將與\n取代\s+後,至少一,特技的最八十,優選升至-AS-許多-AS-可能的字符。 (注意:如果連續超過八十個字符沒有空格,那麼在它們之前和之後將會有一個換行符,但是在它們內部不會發生換行。)

+0

我喜歡使用'replace'。我曾經玩過'split',但是爲'exec'而定居。 – 2012-07-26 18:29:10

-1

正則表達式真的是要走的路。 /.{0,79}(?:\s|$)/g將抓取80個以字符或文件末尾結尾的最長行。多次撥打exec會提取每一行。

var text = ""; 
var regex = /.{0,79}(?:\s|$)/g; 
var lines = []; 
var line; 

while (line = regex.exec(text)) { 
    lines.push(line); 
}