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

标签 javascript string string-formatting

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

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

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

提前致谢!

最佳答案

如果数字在字符串的开头:

("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"]

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

"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

关于javascript - 使用 JavaScript 获取字符串中的第一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/609574/

相关文章:

javascript - 有没有办法让谷歌地图标记的透明度不可点击

c++ - 串联仅在感觉合适时才起作用?

javascript - 通过将每个单词的每个首字母大写并以小写形式休息来返回字符串

c - 第一个字符串输出未显示

Javascript 列格式的字符串

德尔福 : How to use Format() with runtime-built array of TVarRec?

delphi - 当我给它一个负数时,为什么 Format with '%u' 打印出错误的值?

javascript - “计算属性”可能只是流中的文字值?

javascript - 在不修改 Amplify 库的情况下访问错误响应

javascript - 延迟显示更改为无