在java中从指定模式前后的字符串中提取子字符串

在java中从指定模式前后的字符串中提取子字符串,java,Java,我想从字符串中提取满足所需部分前后特定模式的部分: 例如: String [] s1 = my name is ankit kapoor , my name is mayank gupta , my name is preeti singh ; 这里我只需要名字,即ankit,mayank,preeti i、 e在第一个空格出现之后和之前 我现在使用的代码是 String [] final_reult = s1[i].substring((s1.indexof("is")+3) , (s1.l

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

例如:

String [] s1 = my name is ankit kapoor , my name is mayank gupta , my name is preeti singh ;
这里我只需要名字,即ankit,mayank,preeti i、 e在第一个空格出现之后和之前

我现在使用的代码是

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

显然,我在使用循环i.e
for(inti=o;i您可以使用一个简单的正则表达式轻松地做到这一点:

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
ankit
mayank
preeti
编辑

如果要使用
子字符串
查找名字,则需要模拟正则表达式的功能,即查找第一个模式(“is”),然后沿着
字符串
走,直到找到一个空格

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
ankit
mayank
preeti

你知道正则表达式吗?请看StringUtils类它有很多有用的函数。探索和利用现有函数我不能只用我的方法,即使用indexof?雅皮士…它可以工作!!如果我想在is后面加上任何单词…我使用这个方法:String[]final\u reult=s1[i]。substring((s1.indexof(“is”)+3),(s1.索引of(“”));但它不起作用..这不是你上面描述的方法吗?你说不起作用吗?我不明白你想要什么。你的方法按我的需要工作…但我试图做的是…我像这样解析10000个字符串,然后我必须用另一个字符串附加这个字符串…这也很好…但是当我插入时在数据库中,只有方法中的最后一个字符串正在打印…现在我正在尝试将此值存储在数组中..让我们看看可以做些什么限制[]字符串-员工180姓名ankit这些天在工作,员工23姓名chris是一个很好的字符个性(i=o;i