【问题标题】:Quick Problem - Extracting numbers from a string快速问题 - 从字符串中提取数字
【发布时间】:2009-08-22 22:10:45
【问题描述】:

我需要从字符串中提取一个变量号。字符串总是如下所示:

javascript:change(5);

变量为 5。
我怎样才能隔离它?非常感谢。

【问题讨论】:

    标签: javascript jquery string split


    【解决方案1】:

    这是一种方法,假设数字总是用括号括起来:

    var str = 'javascript:change(5);';
    var lastBit = str.split('(')[1];
    var num = lastBit.split(')')[0]; 
    

    【讨论】:

    • 谢谢。这很有意义。也非常感谢其他解决方案。
    • 投了反对票,因为某人太喜欢正则表达式而不能放手?
    • 或者因为它不必要地复杂,有不需要的临时性,而且问题规范很简单“在这些东西中找到不是数字的数字”? /(\d+)/ 是最简单的方法,/javascript:change\((\d+)\);/ 还验证周围数据是否符合预期形式。 split 太聪明了。
    • @hobbs - 不同意,因为 OP 显然有兴趣从函数调用中获取实际参数(无论是数字还是其他),这将与(内容)无关。正则表达式解决方案因其他原因而中断。
    • @karim79 - 与内容无关。它打破了javascript:change('(5)');。事实上,你的只会返回 ' - 正则表达式只会失败......我宁愿找不到任何参数,也不愿从这种函数中返回 '
    【解决方案2】:

    使用regular expressions:-

    var test = "javascript:change(5);"
    var number = new RegExp("\\d+", "g")
    var match = test.match(number);
    
    alert(match);
    

    【讨论】:

      【解决方案3】:

      一个简单的正则表达式可以解决这个问题:

      var inputString = 'javascript:change(5);';
      var results = /javascript:change\((\d+)\)/.exec(inputString);
      if (results)
      {
        alert(results[1]);  // 5
      }
      

      在匹配中使用javascript:change 部分也可确保如果字符串格式不正确,您将无法从匹配中获取值。

      【讨论】:

        【解决方案4】:
        var str = 'javascript:change(5);', result = str.match(/\((\d+)\)/);
        
        if ( result ) {
            alert( result[1] ) 
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-05
          • 1970-01-01
          • 2014-07-24
          • 2019-12-13
          • 2011-07-27
          • 2019-02-04
          • 1970-01-01
          相关资源
          最近更新 更多