当前位置:  开发笔记 > 编程语言 > 正文

使用JavaScript获取字符串中的第一个整数

如何解决《使用JavaScript获取字符串中的第一个整数》经验,为你挑选了3个好方法。

我在循环中有一个字符串,对于每个循环,它都填充了如下所示的文本:

"123 hello everybody 4"
"4567 stuff is fun 67"
"12368 more stuff"

我只想检索字符串中文本的第一个数字,当然,我不知道长度.

提前致谢!



1> KooiInc..:

如果数字位于字符串的开头:

("123 hello everybody 4").replace(/(^\d+)(.+$)/i,'$1'); //=> '123'

如果它在字符串中的某个位置:

(" hello 123 everybody 4").replace( /(^.+)(\w\d+\w)(.+$)/i,'$2'); //=> '123'

对于字符之间的数字:

("hello123everybody 4").replace( /(^.+\D)(\d+)(\D.+$)/i,'$2'); //=> '123'

[ 附录 ]

用于匹配字符串中所有数字的正则表达式:

"4567 stuff is fun4you 67".match(/^\d+|\d+\b|\d+(?=\w)/g); //=> ["4567", "4", "67"]

您可以将结果数组映射到Numbers数组:

"4567 stuff is fun4you 67"
  .match(/^\d+|\d+\b|\d+(?=\w)/g)
  .map(function (v) {return +v;}); //=> [4567, 4, 67]

包括花车:

"4567 stuff is fun4you 2.12 67"
  .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g)
  .map(function (v) {return +v;}); //=> [4567, 4, 2.12, 67]

如果存在字符串不包含任何数字的可能性,请使用:

( "stuff is fun"
   .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
   .map(function (v) {return +v;}); //=> []

因此,要检索字符串的开头或结尾编号 4567 stuff is fun4you 2.12 67"

// start number
var startingNumber = ( "4567 stuff is fun4you 2.12 67"
  .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
  .map(function (v) {return +v;}).shift(); //=> 4567

// end number
var endingNumber = ( "4567 stuff is fun4you 2.12 67"
  .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
  .map(function (v) {return +v;}).pop(); //=> 67


@ user1311069:好吧,答案中没有包含这种情况。如果您提供解决方案,那将是建设性的。随意;)

2> Eugene Moroz..:
var str = "some text and 856 numbers 2";
var match = str.match(/\d+/);
document.writeln(parseInt(match[0], 10));

如果字符串以数字开头(可能前面有空格),那么简单parseInt(str, 10)就足够了. parseInt将跳过前导空格.

10是必要的,因为否则字符串08将被转换为0(parseInt在大多数实现中,考虑0以八进制开头的数字).


给定正则表达式`/\d + /`你真的不需要`parseInt`,比如`+ match.shift()`或`Number(match.shift())`就足够了.此外,您需要检查是否确实存在匹配.输入字符串可能根本不包含数字:在这种情况下,"match"将为"null".

3> Sophie Alper..:

如果你想要一个int,只需parseInt(myString, 10).(10表示基数为10;否则,JavaScript可能会尝试使用不同的基数,例如8或16)

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有