2

文字列を分割したい

'something.somethingMore.evenMore[123].last'

['something',
'something.somethingMore',
'something.somethingMore.evenMore[123]',
'something.somethingMore.evenMore[123].last']

文字列を区切り文字「.」で分割する簡単な解決策がわかりませんが、文字列の内容が先行しています。

4

5 に答える 5

2

私は自分のソリューションを単純とは呼びませんが、

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/

于 2014-09-11T13:19:14.943 に答える
2

分割する代わりにマッチングを試すことができます。

> 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' ]
于 2014-09-11T13:19:48.937 に答える
2

それは単純な解決策が何であるかに依存します。それを行う最も簡単な方法は、最初の配列を作成することです

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('.'))
}
于 2014-09-11T13:22:00.803 に答える