我有textarea的,其形式可以是XML內容,如何提取浮點數從字符串在JavaScript
<tag value="20.434" value1="-12.334" />
或者
20.434 -12.334
我希望能夠提取兩個浮動每行數字。
我有textarea的,其形式可以是XML內容,如何提取浮點數從字符串在JavaScript
<tag value="20.434" value1="-12.334" />
或者
20.434 -12.334
我希望能夠提取兩個浮動每行數字。
您可以結合使用正則表達式/[+-]?\d+(\.\d+)?/g
與String.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);
一旦你找出如何從你的文本之間提取數字,你將使用parseFloat ......你如何提取這些數字完全取決於文本是什麼。很可能你會將整個文本分割在\ s上,然後刪除所有不是數字和點的字符。這應該讓你看到漂浮物......儘管如此,如果沒有看到周圍的文字是什麼樣子,就不可能說出來。
編輯: 好吧,現在你已經改變了你的問題,答案是你只需要獲取名爲value和value1的屬性,然後對它們中的內容運行parse float。如果您的文本區域包含此XML,則需要先解析XML以獲取屬性作爲對象。
您可以隨時加載串入jQuery和獲得的屬性:
$('<tag value="20.434" value1="-12.334" />').attr('value')
$('<tag value="20.434" value1="-12.334" />').attr('value1')
在你的情況下,正則表達式可能是更好的路線。
var regex = /[+-]?\d+\.*\d+/g;將獲取整數和浮點數 –
@JayaramRPai這很好,但有一些小問題:它不匹配簡單的東西,比如'1',並且會匹配像'1 ...... 1'這樣的東西。對於整數和浮點數,我建議將它調整爲'var regex =/[+ - ]?\ d +(\。\ d +)?/ g;'。 – acdcjunior
@acdcjunior,我稍微修改了我的正則表達式到'var regex =/[+ - ]?\ d * \。* \ d +/g;'但我沒有檢查'1 ...... 1'可能性。你很完美,非常感謝。 –