我想从字符串中提取一部分,该字符串在所需部分之前和之后满足特定模式:
示例:
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++)
和输出im获取是:ankit kapoor //而不是ankit mayank gupta //而不是mayank preeti singh //而不是preeti
请帮忙!! 我想只使用这种格式
答案 0 :(得分: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
找到你需要模仿正则表达式的第一个名字,即找到第一个模式(“是”),然后沿着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