Javascript:如何获取字符串中的前4个数字?

14
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]+/)。您确定数字位置不会改变吗? - Risto Novik
6个回答

23
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方法? - like-a-trainee
mystring = mystring.trim() 将删除字符串周围的空格。 - Someth Victory

4
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

2
由于问题是要在任何字符串中找到前4个数字,因此正则表达式解决方案也是可行的:/\d{4}//[0-9]/。请参见正则表达式演示
正则表达式解决方案更加灵活,因为它允许在各种上下文中提取四个数字:
/^\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


1

试试这个:

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

0

你可以使用该函数获取前4个字符。

mystring = "9862 ....... -pack size 1 - SST Unspun Label (Roll) CAT#: 9862"

mystring = mystring.substr(0,4);

或者

mystring = mystring.substring(0,4);

两种方法都可以正常工作...试一下吧


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接