添加

2014-03-14 21 views
2

我用下面的JavaScript來檢測的iOS版本的javascript輸出之間的點添加

var iOS = parseFloat(
    ('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1]) 
    .replace('undefined', '3_2').replace('_', '.').replace('_', '') 
) || false; 

的問題是,腳本顯示7.06,而不是7.0.6

我怎樣才能添加「」最後2個數字之間?

試圖與代碼搞亂,改變一些東西,但不能使它

我在JavaScript的新手,謝謝:)

+0

那麼,你不能有一個有兩個小數點的浮點數。 – rikitikitik

回答

2

的問題是,parseFloat掩蓋了真正的問題,即你的更換是稍微偏離。你開始正確的,如在

('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/gi.exec(navigator.userAgent) || [0,''])[1]) 

收益"7_0_6"。但是,替換隻碰到第一個_,並將該字符串轉換爲"7.0_6"(下一個「_」 - >「」將刪除最後一個下劃線,即獲得7.06)。讓替換做一個全局替換,它會得到兩個。

(('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1]) 
.replace('undefined', '3_2').replace(/_/gi, '.').replace(/_/gi, '') 
) || false; 

將產生"7.0.6"

+1

太棒了!像魅力一樣工作,謝謝 – iDev

1

好了,問題是這樣的:parseFloat。你想要一個字符串,而不是一個數字。一個數字只能有一個小數點。

試試看:

var iOS = ('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1]) 
.replace('undefined', '3_2').replace('_', '.').replace('_', '') || false; 
+0

Nop它沒有工作:/ 給出了相同的結果7.06 – iDev

+0

@ F0u4d,什麼是最初的'navigator.userAgent'? –

+0

我不知道你原來的意思是什麼 – iDev