JavaScript 通过正则表达式拆分字符串
JavaScript split string by regex
我将有一个长度不超过 8 个字符的字符串,例如:
// represented as array to demonstrate multiple examples
var strs = [
'11111111',
'1RBN4',
'12B5'
]
当运行一个函数时,我希望将所有数字字符相加以返回最后一个字符串:
var strsAfterFunction = [
'8',
'1RBN4',
'3B5'
]
您可以看到第一个字符串中的所有 8 个单1
字符最终都为单个8
字符串,第二个字符串保持不变,因为任何时候都没有相邻的数字字符,第三个字符串随着1
和2
字符变为3
而字符串的其余部分保持不变而更改。
我相信在伪代码中做到这一点的最佳方法是:
1. split the array by regex to find multiple digit characters that are adjacent
2. if an item in the split array contains digits, add them together
3. join the split array items
由多个数字字符拆分的.split
正则表达式是什么,例如:
var str = '12RB1N1'
=> ['12', 'R', 'B', '1', 'N', '1']
编辑:
问题:如果结果为"27"或"9",字符串"999"呢?
如果清楚,请始终对数字求和,999
=> 27
,234
=> 9
您可以对整个转换执行此操作:
var results = strs.map(function(s){
return s.replace(/'d+/g, function(n){
return n.split('').reduce(function(s,i){ return +i+s }, 0)
})
});
对于strs
数组,它返回["8", "1RBN4", "3B5"]
.
var results = string.match(/('d+|'D+)/g);
测试:
"aoueoe34243euouoe34432euooue34243".match(/('d+|'D+)/g)
返回
["aoueoe", "34243", "euouoe", "34432", "euooue", "34243"]
George...我的答案最初与dystroy的相似,但是当我今晚回到家并找到您的评论时,我不能放弃挑战
:)
这里没有正则表达式。 fwiw 它可能更快,这将是一个有趣的基准,因为迭代是原生的。
function p(s){
var str = "", num = 0;
s.split("").forEach(function(v){
if(!isNaN(v)){
(num = (num||0) + +v);
} else if(num!==undefined){
(str += num + v,num = undefined);
} else {
str += v;
}
});
return str+(num||"");
};
// TESTING
console.log(p("345abc567"));
// 12abc18
console.log(p("35abc2134mb1234mnbmn-135"));
// 8abc10mb10mnbmn-9
console.log(p("1 d0n't kn0w wh@t 3153 t0 thr0w @t th15 th1n6"));
// 1d0n't0kn0w0wh@t12t0thr0w0@t0th6th1n6
// EXTRY CREDIT
function fn(s){
var a = p(s);
return a === s ? a : fn(a);
}
console.log(fn("9599999gh999999999999999h999999999999345"));
// 5gh9h3
这是小提琴和一个新的小提琴,没有过于聪明的三元
相关文章:
- 通过跳过拆分字符在 javascript 中拆分字符串
- jQuery字符串使用split()方法在空格后拆分字符串
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 如何在JavaScript中按大小写拆分字符串
- 根据上次出现的、和_拆分字符串
- 拆分字符串数组(JavaScript)后未定义
- 在空行上拆分字符串
- 使用Regex拆分字符串,保留分隔符
- 使用jquery或regex,带点但不带点的拆分字符串位于单引号中
- Nashorn和Rhino:使用空白regexp拆分字符串
- Javascript:不使用.split()方法拆分字符串
- 如何使用正则表达式在javascript中拆分字符串
- Javascript在第一个空格上拆分字符串
- 首次出现时拆分字符串
- 如何使用正则表达式(.match())拆分字符串
- 使用正则表达式拆分字符串
- Javascript:拆分字符串,但仅使用 1 个结果
- Angularjs-拆分字符串问题
- angularjs在拆分字符串时解析语法错误
- 基于javascript中的AND OR逻辑拆分字符串