2011-12-28 27 views
1

考慮下面的代碼工作的最有效的方法:保護的sprintf輸出的前導空格

for (i=0; i<nLinears; i++) { 
    for (j=0; j<nLinearPts[i]-1; j++) { 
     $wb.upLinearLoad.append('<div>' + sprintf("%5s%8.1f to%7.1f%8.1f" 
     ,sLinearSegName[i][j],fLinearPtBA[i][j],fLinearPtBA[i][j+1],fLen) 
     .replace(/ /g,"&nbsp;")); 
    } 
} 

這保證了當數由小(更前導空格)更改爲大(較少的前導空格)列間距將保持不變。然而,據我所知,使用.replace的正則表達式效率不高,因爲我在整個應用程序中都有這種結構,所以我需要儘可能快地運行它。我相信,jQuery .text()會照顧我的需要,但我也需要.append().text()結果,我不知道如何使它們一起工作。

任何建議將不勝感激。

+0

您可以更新'sprintf()'函數以首先輸出非空白空格。但是,你真的發現使用正則表達式'.replace()'的性能問題嗎?我不認爲你會有問題。鑑於你似乎有表格數據,爲什麼不使用'

'? (順便說一下,我認爲你在分號前錯過了一個右括號。) – nnnnnn2011-12-28 01:52:45

+0

謝謝你找到失蹤的paren。爲了提出問題,我截斷了實際上長得多的陳述,並且意外地拿出了所需的副本。我在其他地方使用桌子來處理這個問題,但是我聽說他們也有很高的開銷。然而,我並不確定表格或正則表達式是一個真正的性能問題。後來我可能會嘗試一些事情來加速它,但目前我正試圖完成它,只是隨便試圖避免它太慢。我想我會快速瀏覽一下sprintf代碼。感謝您的評論。 – Terry 2011-12-28 02:12:54

+0

我看着sprintf(),發現用填充字符插入替換' '的簡單單語句更改讓我獲得了我需要的東西。 – Terry 2011-12-29 01:22:17

回答

0

您可以更新sprintf()函數以首先輸出非中斷空格。

但你真的發現使用正則表達式的性能問題.replace()?我不認爲你會有問題。鑑於你似乎有表格數據,爲什麼你不使用<table>?這是表格的用途。

0

我看着的sprintf(),發現一個簡單的語句變化產生什麼,我需要:

pad_character = '&nbsp;'; 

我感謝的sprintf()實現使用有意義的變量名的作者。