【问题标题】:Javascript: How to get the first 4 numbers in a string?Javascript:如何获取字符串中的前 4 个数字?
【发布时间】:2012-06-21 06:09:51
【问题描述】:
mystring = "9862 ....... -pack size 1 - SST Unspun Label (Roll) CAT#: 9862"

我想获取此字符串“9862”中的前 4 个数字。如何获取此字符串中的第一个数字序列。并将其存储在另一个变量中?

Javascript 似乎无法识别此变量。我不知道为什么。 如果我这样做:

alert(mystring); //I don't get an alert pop up nor does it show any errors.

我尝试存储在“mystring”变量中的文本是否有问题?

【问题讨论】:

  • 是的,用正则表达式从 mystring.match(/^[0-9]+/) 开始获取数字,你确定数字位置没有改变吗?

标签: javascript string extract match


【解决方案1】:

由于问题是在任何字符串中查找前 4 位数字,因此也可以使用正则表达式解决方案:/\d{4}//[0-9]/。见regex demo

正则表达式解决方案更灵活,因为它允许在各种上下文中提取四位数字:

/^\d{4}/ // To match any first 4 digits at the start of a string
/\d{4}/ // To match any first 4 digits anywhere inside a string
/word.*?(\d{4})/ // To match and capture any first 4 digits after a specific `word`

请看下面的演示:

var mystring = "9862 ....... -pack size 1 - SST Unspun Label (Roll) CAT#: 9862";
console.log(mystring.match(/^\d{4}/)[0]); // The first 4 digits at the start of a string
console.log("Year: 2018".match(/\d{4}/)[0]); // The first 4 digits anywhere in a string
console.log("Year: 2012".match(/Year.*(\d{4})/)[1]); // The first 4 digits after Year

【讨论】:

    【解决方案2】:
    var extractInts = function(str) {
        r = [];
        for ( var i = 1, l = str.length; i <= l; ++i ) {
            if ( !isNaN(parseInt(str.substring(i-1, i),0))) {
                str = str.substring(i-1);
                r.push(parseInt(str, 0));
                str = str.substring( parseInt(str,0).toString().length);
                i = 1;
            }
        }
        return r;
    };
    
    var str = "Hi, here is an int 1, and another 3, and finally 37";
    var i_array = extractInts(str);
    console.log("extractInts: " + i_array[0]); //Prints 1
    

    上述函数会将每个整数提取到一个数组中,因此您只需提取第一个。

    【讨论】:

      【解决方案3】:

      试试这个:

      mystring = "9862 ....... -pack size 1 - SST Unspun Label (Roll) CAT#: 9862";
      var str=mystring.substr(0,4);
      alert(str);
      

      【讨论】:

        【解决方案4】:
        mystring = "9862 ....... -pack size 1 - SST Unspun Label (Roll) CAT#: 9862";
        
        mystring = mystring.substring(0, 4);
        
        alert(mystring.trim());
        

        【讨论】:

        • 谢谢,但如果只有 3 个数字。我说 9862 很常见,但有时我会得到例如 '956' 一个 3 位数字,子字符串占用数字后面的空格。我如何只得到号码?像 mystring.subinteger 一样只获取数字并且不包含任何空格,就像使用 substring 方法一样?
        • mystring = mystring.trim() 将删除字符串周围的空格
        【解决方案5】:

        您可以:

        mystring=mystring.substring(from,to);
        

        mystring=mystring.substr(start,length);
        

        如果 start 为 0(如您的情况),则两种方式相同。

        来源:

        http://www.w3schools.com/jsref/jsref_substr.asp
        http://www.w3schools.com/jsref/jsref_substring.asp

        【讨论】:

          【解决方案6】:

          您可以使用函数来获取前 4 个字符

          mystring = "9862 ....... -pack size 1 - SST Unspun Label (Roll) CAT#: 9862"
          
          mystring = mystring.substr(0,4);
          

          mystring = mystring.substring(0,4);
          

          两者都可以正常工作...尝试一下

          【讨论】:

            猜你喜欢
            • 2017-02-14
            • 1970-01-01
            • 1970-01-01
            • 2011-05-28
            • 2013-04-03
            • 2020-02-29
            • 1970-01-01
            • 2021-05-17
            相关资源
            最近更新 更多