2013-02-08 47 views
0

之前,我有一個字符串說:JavaScript正則表達式 - 數百分號

var currentLabel = "Uploading file... 0%" 

這是初始狀態時,上載開始,我需要的操作運行,以更新它。我需要把這個0代入一個新的數字,但是我不能只是得到一個子串,因爲它最終會變成2個數字,長度將會改變...

如果長度不變,我可以做:

var newLabel = currentLabel.substring(0, currentLabel.length - 2) + percent + "%"; 

我猜我需要一個正則表達式或真的任何其他方式。

+2

你爲什麼不能做'VAR newLabel = 「上傳文件...」 +%的+ 「%」;'' –

+0

VAR newLabel = currentLablel.replace(/ \ d + /,percent);',那麼你可以指定任何你喜歡的字符串,上面的代碼只是希望只有一個......) – RobG

回答

1

你也許可以做到這一點與indexOfsubstring組合,但正則表達式並使其更簡單:

newLabel = currentLabel.replace(/\d+$/, percent + "%"); 

有字符串中沒有其他數字,對不對?

你也可以再次寫字符串..它可能會比正則表達式更便宜。

+0

真的!我最初的想法是,它會導致閃爍,但它不會,我只是把它取代。你的正則表達式也適用。 – parliament

0

Certianally可以用正則表達式和替換

([\S\s]+?[\d]+([%]) 

簡單的字符串替換來完成

$1 "new percentage" $2 
0

/.*([0-9]+)\%/ 這樣的事情會給你的號碼。但真的要做到這一點還有很長的路要走。

0

你並不真的需要正則表達式在這種情況下:

var currentLabel = "Uploading file... "; 
var newLabel = currentLabel + percent + "%";