文字列を分割したい
'something.somethingMore.evenMore[123].last'
に
['something',
'something.somethingMore',
'something.somethingMore.evenMore[123]',
'something.somethingMore.evenMore[123].last']
文字列を区切り文字「.」で分割する簡単な解決策がわかりませんが、文字列の内容が先行しています。
文字列を分割したい
'something.somethingMore.evenMore[123].last'
に
['something',
'something.somethingMore',
'something.somethingMore.evenMore[123]',
'something.somethingMore.evenMore[123].last']
文字列を区切り文字「.」で分割する簡単な解決策がわかりませんが、文字列の内容が先行しています。
私は自分のソリューションを単純とは呼びませんが、
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"));
分割する代わりにマッチングを試すことができます。
> 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' ]
それは単純な解決策が何であるかに依存します。それを行う最も簡単な方法は、最初の配列を作成することです
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('.'))
}