javascript字符串提取数字
本文介绍了javascript字符串提取数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
需求:要把一串字符拆分成有用的信息,字符串的格式有两种情形
1、abc10
2、123abc100
字符与数字长度不固定,提取后的结果应为:
1、['abc','10']
2、['123','abc','100']
补充需求
输出结果
1、['abc','10']
2、['abc','123','100']
这样使用的时候更方便。
当abc为某个特定的字符时,字符前面的数字与本身合并一起。如:1ab23=>['1ab','23']
解决方案
这需求改的…… PM 问的问题吗? >_<
/**
* @param {string} str
* @param {string|string[]} [keywords]
* @returns {string}
*/
function match (str, keywords) {
str = String(str)
var ks = ''
if (Array.isArray(keywords)) {
ks = keywords.map(k => '\\d+' + k).join('|') + '|'
} else if (typeof keywords === 'string') {
ks = `\\d+${keywords}|`
}
var checker = new RegExp(`${ks}\\d+|\\D+`, 'g')
return str.match(checker).sort((a, b) => !isNaN(a * 1) && isNaN(b * 1) ? 1 : -1)
}
console.log(match('123abc100')) // [ 'abc', '123', '100' ]
console.log(match('1ab23', 'ab')) // [ '1ab', '23' ]
console.log(match('ab23', 'ab')) // [ 'ab', '23' ]
console.log(match('1ab23cd244gh3', ['ab', 'cd'])) // [ '1ab', '23cd', 'gh', '244', '3' ]
这篇关于javascript字符串提取数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文