【问题标题】:Nodejs - Extract a dynamic numerical value from an array of strings?Nodejs - 从字符串数组中提取动态数值?
【发布时间】:2016-01-26 10:03:42
【问题描述】:

我有一个存储在字符串数组中的命令输出,这个数值可能存在也可能不存在于字符串中,如果它退出,它可以是任何整数值。我用 regex 和 parseInt 尝试了各种方法,但我没有得到想要的效果,我相信是因为字符串的编码方式。过去其他人是如何处理这件事的?

编辑:

问题是字符串返回,编码为 UT8。所以我得到的初始字符串是这样的:disk: 40 我可以减少到:40 然而,在这之后,使用 isNaN(decode_utf8(str)) 仍然会为 isNaN 产生一个 true。我不确定如何克服这个问题

【问题讨论】:

  • 我猜其他人在 google.com 上搜索了“number regex javascript”,查看了 regular-expressions.info 并研究了 regexone.com 的资料。
  • 你能举个数组数据的例子吗?
  • 问题是字符串返回,编码为 UT8。所以我得到的初始字符串是这样的:`disk:40` 我可以减少到:40 然而,在这之后,使用isNaN(decode_utf8(str)) 仍然会为 isNaN 生成一个 true。我不确定如何克服这个问题。
  • decode_utf8 是一个 php 函数。您已将问题标记为 node.js。此外,utf8 是 javascript 默认值。你为什么还要尝试解码它?
  • 因为即使没有,它仍然无法正确识别数字并为 isNaN 返回 true。

标签: regex node.js parsing


【解决方案1】:

尝试测试一个字符串是否是这样的数字:

var toTest = "232";

if (!isNaN(+toTest)) {
    var aNumber = +toTest
    console.log('That is a number: ', aNumber)

如果它必须是一个整数,你可以这样检查:

    // check if integer ...
    var isInt = typeof aNumber === "number" && aNumber % 1 === 0;
}    

如果你使用的是最新的 JavaScript ES6,那么 isNumber 是内置的:

Number.isInteger(123)  // true

【讨论】:

  • 问题是字符串返回,编码为 UT8。所以我得到的初始字符串是:`disk: 40` 我可以将其简化为:40 然而,在此之后,使用isNaN(decode_utf8(str)) 仍然会为 isNaN 生成一个 true。我不确定如何克服这个问题。
  • @VBM :该信息应该出现在问题中。这非常重要;)另外,您从哪里获取数据?如何复制格式?如果无法转换为数字,则一定是没有正确解码。
猜你喜欢
  • 2020-11-12
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
相关资源
最近更新 更多