【问题标题】:how to extract floating numbers from strings in javascript如何从javascript中的字符串中提取浮点数
【发布时间】:2013-06-28 23:02:09
【问题描述】:

我在 textarea 中有 xml 内容,可以是表单,

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

或者

20.434 -12.334

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

【问题讨论】:

标签: javascript regex


【解决方案1】:

您可以将正则表达式 /[+-]?\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.

【讨论】:

  • var 正则表达式 = /[+-]?\d+\.*\d+/g;将同时获取整数和浮点数
  • @JayaramRPai 这很好,但有一些小问题:它不能匹配简单的东西,比如1,而是匹配像1......1 这样的东西。对于整数和浮点数,我建议将其调整为 var regex = /[+-]?\d+(\.\d+)?/g;
  • @acdcjunior,我稍微修改了我的正则表达式为var regex = /[+-]?\d*\.*\d+/g;,但我没有检查1......1 的可能性。你的很完美,非常感谢。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 格式可以是 xml 中的数字,也可以只是数字。我不想将格式限制为 xml。
    • 我什至不确定问题是什么......只需对可能包含浮点数的所有内容运行 parseFloat,检查 isNaN(),如果它为假,那么你有一个浮点数。
    猜你喜欢
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2010-10-30
    相关资源
    最近更新 更多