如何拆分具有小计前缀的字符串
How to split string with subtotal prefix
我想拆分字符串
'something.somethingMore.evenMore[123].last'
至
['something',
'something.somethingMore',
'something.somethingMore.evenMore[123]',
'something.somethingMore.evenMore[123].last']
我想不出用分隔符"."分隔字符串的简单解决方案,但是具有字符串的先前内容。
现代JS编程风格类似
str //take the input
.split('.') //and split it into array of segments,
.map( //which we map into a new array,
function(segment, index, segments) //where for each segment
return segments.slice(0, index+1) //we take the segments up to its index
.join(".") //and put them back together with '.'
;
}
)
这利用了Array#map
函数不仅传递当前值,还传递其索引和整个输入数组的优点。这使我们可以很容易地使用slice
来获得一个数组,该数组包含截至当前分段的所有分段。
我不会称我的解决方案简单,而是:
function splitArrayIntoGoofyArray(val){
var str =val.split("."), arr = [];
for (var x = str.length; x >= 1; x--){
var cnt = str.length - x;
arr.push((cnt > 0) ? arr[cnt - 1] + "." + str[cnt] : str[cnt]);
}
return arr;
}
console.log(splitArrayIntoGoofyArray("aaa.bbb.ccc.ddd"));
http://jsfiddle.net/7tav4sue/
这取决于什么是简单的解决方案。最简单的方法是使用创建第一个阵列
var str = 'something.somethingMore.evenMore[123].last';
var arr = str.split('.');
然后用这个数据填充新的数组
var result = [];
for (var i = 0; i < arr.length; i++) {
var item = [];
for (var j = 0; j <= i; j++) {
item.push(arr[j]);
}
result.push(item.join('.'))
}
您可以尝试匹配而不是拆分,
> var s = 'something.somethingMore.evenMore[123].last';
undefined
> var regex = /(?=(^((([^.]*)'.[^.]*)'.[^.]*)'.[^.]*))/g;
undefined
> regex.exec(s)
[ '',
'something.somethingMore.evenMore[123].last',
'something.somethingMore.evenMore[123]',
'something.somethingMore',
'something',
index: 0,
input: 'something.somethingMore.evenMore[123].last' ]
为了获得所需的输出,
> regex.exec(s).slice(1,5)
[ 'something.somethingMore.evenMore[123].last',
'something.somethingMore.evenMore[123]',
'something.somethingMore',
'something' ]
我想您需要一个循环:
在查找"."字符时,在列表子字符串中返回,直到新的"."索引为止。使用找到的最后一个正确索引开始每次搜索。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 添加前缀“#"到数组中的某些字符串值
- 如何使用JavaScript(不是jQuery)从字符串中过滤前缀和修剪单词
- 获取不带字符串前缀的 json 值
- 扫描 DOM 并返回或操作具有以特定字符串为前缀的特定属性的元素
- 用JS中的字符串为所有非站点内的链接加上前缀..你能校对一下我拼凑的这个快速的小脚本吗
- 删除标记字符串的前缀和后缀文本
- Regex匹配子字符串,但不匹配以单词为前缀的子字符串
- javascript:解析开始和结束都带有字符串前缀的float
- 如何拆分具有小计前缀的字符串
- 匹配以前缀开头的子字符串
- Javascript或JQuery字符串获得具有特定前缀的子字符串
- 如何将字符串(带前缀的数字)转换为JS中的Double/Float
- ng-class中的字符串前缀
- 在数组中给所有字符串加上" "前缀的最简单方法是什么?(感叹号)在javascript
- 续集查询字符串前缀 / 开头
- 如何通过添加前缀和后缀与javascript连接字符串