0

区切り文字としてスペースで分割したいのですが、 <> 内のスペースは無視してください。

への出力"abc <def deaf;hello world> good"

  • abc
  • <def deaf;hello world>
  • 良い

これを Java で実装するにはどうすればよいですか? 正規表現は機能するはずですが、正規表現なしで実装する方がよいでしょう。

4

1 に答える 1

3

最も簡単な方法は、文字列をたどることです。

ArrayList<String> out = new ArrayList<String>();
int i, last = 0;
int depth = 0;
for(i=0; i != string.length(); ++i) {
    if(string.charAt(i) == '<') ++depth;
    else if(string.charAt(i) == '>') { if(depth >0) --depth; }
    else if(string.charAt(i) == ' ' && depth == 0) {
        out.add(string.substring(last, i));
        last = i+1;
    }
}
if(last < string.length()) out.add(string.substring(last));

あなたのサンプル"abc <def deaf;hello world> good"の場合、結果は["abc", "<def deaf;hello world>", "good"]

于 2013-10-20T19:07:03.030 に答える