17

我在 textarea 中有 xml 内容,可以是以下形式,

<tag value="20.434" value1="-12.334" /> 

或者

20.434 -12.334

我希望能够每行提取两个浮点数。

4

3 回答 3

43

您可以/[+-]?\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);

在此处查看演示代码。

于 2013-06-28T23:11:18.307 回答
2

您总是可以将字符串加载到 jQuery 中并获取属性:

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

在您的情况下,正则表达式可能是更好的途径。

于 2013-06-28T23:28:19.387 回答
1

一旦弄清楚如何从文本之间提取数字,您将使用 parseFloat ......如何提取这些数字完全取决于该文本是什么。您很可能会在 \s 上拆分整个文本,然后删除所有不是数字和点的字符。那应该让你有花车......虽然再一次,如果没有看到周围的文字是什么样子就不可能说出来。

编辑:好的,既然你已经改变了你的问题,答案是你只需获取名为 value 和 value1 的属性,然后对其中的内容运行 parse float 。如果您的文本区域包含此 XML,您需要首先解析 XML 以将属性作为对象获取。

于 2013-06-28T23:05:27.990 回答