【问题标题】:How to extract number from a string in javascript如何从javascript中的字符串中提取数字
【发布时间】:2011-10-25 09:20:11
【问题描述】:

我在 javascript 中有一个元素,如下所示:

 <span>280ms</span>

我想从 span 元素中提取 280。我该怎么做? span 元素中的内容可以是任意数字,后跟 ms。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

parseInt() 很可爱。

HTML

<span id="foo">280ms</span>

JS

var text = $('#foo').text();
var number = parseInt(text, 10);
alert(number);

parseInt() 会将任何字符串作为数字处理,并在到达非数字字符时停止。在这种情况下,m 位于 280ms 中。在找到数字 280 后,将这些数字评估为以 10 为底(第二个参数)并返回数值 280。请注意,这是一个实际数字,而不是字符串。

编辑:
@Alex Wayne 的评论。
只需先过滤掉非数字字符即可。

parseInt('ms120'.replace(/[^0-9\.]/g, ''), 10);

【讨论】:

  • 这是最好的答案。请注意,尽管parseInt 中的 10 参数是可选的,但您应该使用它来防止将数字意外解析为八进制。如果 span 包含“0700ms”,则结果不会返回 700,而是 448!
  • @Jacob 是对的。如果省略,则 10 不是默认值。相反,javascript 会尝试根据字符串格式进行猜测。历史证明,让 javascript 尝试猜测任何事情都会导致痛苦和折磨。因此,请始终明确指出您的基数。
  • 解析ms120得到120呢?
  • @ThomasClowes 只需先过滤掉非数字字符。 parseInt('ms120'.replace(/[^0-9\.]/g, ''), 10);
  • @AlexWayne 您应该将您的最后一条评论作为答案的一部分。如果字符串不是以数字开头的,那么简单的parseInt() 将不起作用,就像在 cmets 中已经指出的那样。
【解决方案2】:

试试这个:

var num = document.getElementById('spanID').innerText.match(/\d+/)[0];

jQuery 版本:

var num = $('span').text().match(/\d+/)[0]; // or $('#spanID') to get to the span

如果你想作为数值(而不是字符串),使用 parseInt:

var num = parseInt($('span').text().match(/\d+/)[0], 10);

【讨论】:

  • 使用parseInt(),你不需要regex匹配。不过,感谢提供 radix 参数。
【解决方案3】:

试试下面的

var strValue = // get 280m from the span
var intValue = parseInt(strValue.match(/[0-9]+/)[0], 10);

【讨论】:

    【解决方案4】:

    你可以使用parseInt()函数

    var number = parseInt($("span").text())
    

    【讨论】:

    • +1 但是,您应该将radix 参数提供给parseInt()
    【解决方案5】:

    更改跨度:

    <span id='msSpan'>280ms</span>
    

    那么你可以这样做:

    alert($('#msSpan').text());
    

    【讨论】:

      【解决方案6】:

      它总是以“ms”结尾吗?你可以这样做:

      var num = s.substring(0, s.length-2) 
      

      其中 s 是跨度中的字符串。要获取此值,您可以在 span 上使用 text()、html() 或 innerHTML。

      【讨论】:

        【解决方案7】:

        一般来说数字没有负数或正数

        <div>
          blah blah
          <span>285blahblah</span>
        </div>
        
        var html= document.getElementsByTagName('div')[0].innerHTML;// or $('div').html() if jquery
        
        var number = parseFloat(html.match(/-*[0-9]+/));
        

        http://jsfiddle.net/R55mx/

        【讨论】:

          【解决方案8】:

          var myNumber= $('span').text().replace(/[^d.,]+/,'');

          【讨论】:

            【解决方案9】:

            使用 jquery 非常简单。可能更好地给跨度一个 id

            var mytext=replace($('span').text(),"ms","");
            

            编辑删除 ms

            【讨论】:

            • OP 只想要.text() 的数字部分
            • 这不会提取数字,而是为您提供整个文本。
            猜你喜欢
            • 2012-04-17
            • 2017-07-20
            • 2012-01-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多