2014-02-17 50 views
0

我在JavaScript中的變量,它正拿着一斤貨幣這就好比parseFloat NaN的問題

var a = £250 

價值£250來這樣的,它不是直接assiged到。它就像 var a = $(「#spanid」)。text();

現在我分裂使用string.split方法這個變量這樣

var b = a.split('£'); 

和當m與alert(b[1])檢查,我得到值作爲250,其是正確的。

但現在當m做這樣

var c = parseFloat(b[1]). 

我得到C的值作爲NaN。我已經嘗試了很多東西,但我一直得到的價值爲NaN,有人可以幫忙嗎?

由於

+0

是變量'了'一個字符串? –

+0

我已經聲明變量a爲VAR,它是持有字符串值 –

+1

而JavaScript不會在您的代碼中引發語法錯誤?在貨幣價值周圍沒有引號...... –

回答

1

從使用正則表達式和三元語句類型轉換字符串a獲取數值磅值。即使前後有其他字符,該解決方案也可以獲得字符串中提到的第一個貨幣值。結果也保證是一個數字,所以立即在算術計算中使用它是安全的。

/* the first line is assumed */ 
var a = "£250"; 

var pounds = a.match(/[-.\d]+/g); 
/* match possible parts of a pound */ 

pounds = pounds ? pounds[0] - 0 || 0 : 0; 
/* convert match to an actual number type or else 0 if 
* no match is obtained or the match is not valid */ 

在某些情況下,知道有效數字不存在而不是假定它爲零可能很重要。如果你想獲得的null匹配或可能NaN結果不正確地形成的數字(如數字減去的隨機混合物,小數點和),那麼你可以替換的最後一條語句:

pounds = pounds ? pounds[0] - 0 : pounds; 

注意:上面的正則表達式不應用於從字符串中提取一般數字或驗證任意數字。它只適用於非常簡單的貨幣數字。

順便提一下,我提供了一個優秀的正則表達式,用於在幾個月前從字符串中提取常規數字。我打算把它鏈接到這裏作爲參考,但顯然我刪除了內部答案的問題(可能是一個重複的問題,所以在我回答後,問題被刪除,經常發生)。我如何去找到我已經刪除的問題的答案?

+0

我意識到我的初稿並不完整,因爲我在代碼中輸入解釋性註釋時意外提交了一個不完整的三元語句。 (我正在使用一個新的鍵盤,它的修飾鍵不在我習慣的正常位置。)是否有任何其他原因讓我的答案中仍然存在反對票?我相信這個答案和技巧對於來到Stack Overflow的人來說更有用,也是一個更好的通用解決方案,可以尋找解決類似問題的解決方案,而這種解決方案可能不完全符合'''符號的分裂問題。 –

0

你的變量是astring

var a = '£250'; 
var b = a.split('£'); 
var c = parseFloat(b[1]); 
alert(c); 

更新:OP被編輯......仍然沒有串左右,雖然報價...

+0

對不起,這是一個錯字..我已經糾正它 –

+0

@vikashbhartia即使這是一個錯誤的問題,這段代碼是完全有效的,並且作品 – NicoSantangelo

0

您需要:

var a = '£250', 
    b = a.split('£'), 
    c = parseFloat(b[1]); 
alert(c); 

a是一個字符串,因此您需要將其值包含在' '以及使用a.split因爲您已將變量名稱定義爲a而不是string.split

Fiddle Demo

+0

HI felix,m以同樣的方式,這是一個錯字,在我的問題,我在哪裏給了string.split,它只是一個.split。 –

+0

然後,它應該工作,檢查我的演示在答案:) – Felix

+0

嗨菲利克斯,其實第一行m存儲在變量a£250是這樣var a = $(「#spanid」)。 –