【问题标题】:Parsing an Int from a string in javascript从javascript中的字符串解析一个Int
【发布时间】:2009-01-15 22:07:57
【问题描述】:

在 javascript 中,从以字母开头的字符串(例如“test[123]”)中解析 INT 的最佳方法是什么?我需要一些适用于以下示例的东西。

我的 JS:

$(document).ready(function() {

    $(':input').change( function() {
        id = parseInt($(this).attr("id"));  //fails for the data below
        alert(id);
    });
}

我生成的 HTML:

<select id="attribute[123]">
<!-- various options -->
</select>
<select id="attribute[456]">
<!-- various options -->
</select>

谢谢!

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您可以使用正则表达式来匹配数字:

    $(this).attr("id").match(/\d+/)
    

    【讨论】:

    • 勾选简洁和可读性。不过谢谢大家。 :)
    • 请注意,对于更一般的情况(以允许签名整数),正则表达式应更改为 "/[-+]?\d+/",但这对于 OP 的情况来说似乎没有必要。跨度>
    • 使它更健壮的方法是 $(this).attr("id").match(/\[(\d+)\]/)[1] 因为那会允许事情像“attribute7[123]”
    • 这里的解释会很有帮助。
    【解决方案2】:
    parseInt(input.replace(/[^0-9-]/,""),10)
    

    【讨论】:

    • 有趣的是,如果给出像“1e10”这样的有效浮点文字,这将不起作用
    • 当然它不适用于浮动。该操作专门询问了整数。
    【解决方案3】:

    可能只是用 .replace() 过滤掉字符串。如果还有其他方法,那么我不知道:

    parseInt("attribute[123]".replace("attribute[", "").replace("]", "")));
    

    您可能可以使用一些正则表达式将其仅放入一个 .replace() 中,但我不擅长正则表达式,所以我只做了两次。

    在你的浏览器中测试这个

    javascript:alert(parseInt("attribute[123]".replace("attribute[", "").replace("]", "")));
    

    应该报警 123。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2017-09-26
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多