-5

目的の部分の前後で特定のパターンを満たす文字列から部分を抽出したい:

例 :

String [] s1 = my name is ankit kapoor , my name is mayank gupta , my name is preeti singh ;

ここでは、最初の名前、つまり ankit 、mayank 、preeti 、つまり is の後、最初のスペースの発生前のみが必要です。

私が今まで使ってきたコードは

String [] final_reult = s1[i].substring((s1.indexof("is")+3) , (s1.lastindexof(" ")));

明らかにループを使用していますfor(int i=o;i<s1.length;i++)

and output im gets are: ankit kapoor // ankitの代わりに mayank gupta // mayankの代わりに preeti singh // preetiの代わりに

助けてください !!このフォーマットのみを使用したい

4

1 に答える 1

0

これは、単純な正規表現を使用して簡単に実行できます。

public static void main(String[] args) {
    String[] s1 = {"my name is ankit kapoor", "my name is mayank gupta", "my name is preeti singh"};
    final Pattern pattern = Pattern.compile("is ([a-zA-Z]+) ");
    for (final String string : s1) {
        final Matcher matcher = pattern.matcher(string);
        matcher.find();
        System.out.println(matcher.group(1));
    }
}

出力:

ankit
mayank
preeti

編集

最初の名前を見つけるために使用したい場合は、正規表現が行うことをエミュレートする必要があります。つまり、最初のパターン ("is ")を見つけてから、スペースが見つかるまでsubstring歩きます。String

public static void main(String[] args) {
    String[] s1 = {"my name is ankit kapoor", "my name is mayank gupta", "my name is preeti singh"};
    for (final String string : s1) {
        final int start = string.indexOf("is ") + 3;
        int end = start;
        for (final char c : string.substring(start).toCharArray()) {
            if (c == ' ') {
                break;
            }
            ++end;
        }
        System.out.println(string.substring(start, end));
    }
}

出力:

ankit
mayank
preeti
于 2013-03-12T11:20:28.493 に答える