1

文字列がある場合:

String s = "This is a string to test splitting on!";

そして、文字列内のインデックスを表す整数の配列:

int[] indices = {4, 6, 9, 12, 15};

次のような文字列の配列を取得することは可能ですか?

"This",
" i",
"s a",
" st",
"rin",
"g to test splitting on!"

s.substring(indices[i], indices[i+1])呼び出している(または同様の)インデックスをループせずに?

残念ながら、インデックスはすべて任意であるため、正規表現は役に立ちません。基本的に、正規表現の代わりに整数配列を渡すことができるsplit()に相当するものを見つけたいと思います。

4

1 に答える 1

2

substring() を使用したくない場合は、これを試してください。

import java.util.*;
public class StringSplitter implements Iterable<String>
{
    private Scanner scanner;
    private StringBuilder toParse;
    private int indices[];

    public StringSplitter(String toSplit, int... indices)
    {
        Arrays.sort(indices);    //make sure it is sorted otherwise it won't work properly
        toParse = new StringBuffer(toSplit);
        for(int i = 0; i < indices.length; ++i)
        {
            toParse.insert(indices[i] + i, "\u0080");
        }
        scanner = new Scanner(toParse.toString());
        scanner.useDelimeter("\u0080");
        this.indices = indices;
    }

    public Iterator<String> iterator()
    {
        return scanner;
    }
}

次に、for-each ループを使用して文字列をトラバースします。

StringSplitter s = new StringSplitter("This is a string to test splitting on!", 4, 6, 9, 12, 15);
for(String elem : s)
{
    System.out.println(elem);
}
于 2013-03-13T06:34:08.993 に答える