例子:字符串124346564abcd 输出43 65 abcd
具体实现:
str = "124346564abcd"var num = str.match(/[0-9]/g)var letter = str.match(/[a-z,A-Z]/g);// let numberList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]let numberList = [9,8,7,6,5,4,3,2,1,0]let letterList = ['a', 'b', 'c', 'd', 'e']// 找到第一个数字(字母)出现的位置function findFirst(arr,num) { for (let index = 0; index < arr.length; index++) { if (arr[index] == num) { return index } }}let startIndex = 0if (num.length > 0) { // 在字典中的起始位置 startIndex = findFirst(numberList, num[0])}// 数字结果let numArr = []// 处理数字let indexNum = 0function main(arr) { // 计数标识 let numIndex = 0 let result = '' for (let index = startIndex; index < numberList.length; index++) { if (numberList[index] == arr[indexNum]) { numIndex ++ indexNum ++ result += numberList[index] } else if (numIndex >= 2) { numArr.push(result) result = '' startIndex = index numIndex = 0 } else { startIndex = findFirst(numberList, arr[indexNum]) result = '' numIndex = 0 if (indexNum < arr.length) { main(num) } break } }}let startIndexLetter = 0if (letter.length > 0) { // 在字典中的起始位置 startIndexLetter = findFirst(letterList, letter[0])}// 字母结果let letterArr = []// 处理字母let indexLet = 0function mainLetter(arr) { // 计数标识 let numIndex = 0 let result = '' for (let index = startIndexLetter; index < letterList.length; index++) { if (letterList[index] == arr[indexLet]) { numIndex ++ indexLet ++ result += letterList[index] } else if (numIndex >= 2) { letterArr.push(result) result = '' startIndexLetter = index numIndex = 0 } else { startIndexLetter = findFirst(letterList, arr[indexLet]) if (indexLet < arr.length) { mainLetter(letter) } break } }}if (num && num.length>0) { main(num) console.log(numArr);}if (letter&&letter.length>0) { mainLetter(letter) console.log(letterArr);}
这种方法不好,各位要是有好的方法请告知