-5

我想从字符串中提取在所需部分之后和之前满足特定模式的部分:

例子 :

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

在这里,我只需要名字,即 ankit 、mayank 、 preeti ,即在第一个空格出现之后和之前。

我到目前为止使用的代码是

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

显然我使用循环即for(int i=o;i<s1.length;i++)

我得到的输出是: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

编辑

如果你想用它substring来查找名字,你需要模拟正则表达式的作用,即找到第一个模式(“is”),然后沿着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 回答