2013-06-28 69 views

回答

20

您可以結合使用正則表達式/[+-]?\d+(\.\d+)?/gString.match()解析的數量和Array.map()把他們變成浮動:

var regex = /[+-]?\d+(\.\d+)?/g; 

var str = '<tag value="20.434" value1="-12.334" />'; 
var floats = str.match(regex).map(function(v) { return parseFloat(v); }); 
console.log(floats); 

var str2 = '20.434 -12.334'; 
var floats2 = str2.match(regex).map(function(v) { return parseFloat(v); }); 
console.log(floats2); 

var strWithInt = "200px"; 
var ints = strWithInt.match(regex).map(function(v) { return parseFloat(v); }); 
console.log(ints); 

See demo code here.

+0

var regex = /[+-]?\d+\.*\d+/g;將獲取整數和浮點數 –

+1

@JayaramRPai這很好,但有一些小問題:它不匹配簡單的東西,比如'1',並且會匹配像'1 ...... 1'這樣的東西。對於整數和浮點數,我建議將它調整爲'var regex =/[+ - ]?\ d +(\。\ d +)?/ g;'。 – acdcjunior

+0

@acdcjunior,我稍微修改了我的正則表達式到'var regex =/[+ - ]?\ d * \。* \ d +/g;'但我沒有檢查'1 ...... 1'可能性。你很完美,非常感謝。 –

2

一旦你找出如何從你的文本之間提取數字,你將使用parseFloat ......你如何提取這些數字完全取決於文本是什麼。很可能你會將整個文本分割在\ s上,然後刪除所有不是數字和點的字符。這應該讓你看到漂浮物......儘管如此,如果沒有看到周圍的文字是什麼樣子,就不可能說出來。

編輯: 好吧,現在你已經改變了你的問題,答案是你只需要獲取名爲value和value1的屬性,然後對它們中的內容運行parse float。如果您的文本區域包含此XML,則需要先解析XML以獲取屬性作爲對象。

+0

添加文本格式 – gizgok

+0

格式可以是xml中的數字,也可以是數字。我不想將格式限制爲xml。 – gizgok

+0

我甚至不確定問題是什麼......只需在所有可能包含浮點數的地方運行parseFloat,檢查isNaN(),如果它是假的,那麼你就有一個浮點數。 –

1

您可以隨時加載串入jQuery和獲得的屬性:

$('<tag value="20.434" value1="-12.334" />').attr('value') 
$('<tag value="20.434" value1="-12.334" />').attr('value1') 

在你的情況下,正則表達式可能是更好的路線。

相關問題