从另外两个字符串中查找并获取字符串?

时间:2014-05-22 00:01:16

标签: java string

我想在JAVA中的另一个String中查找一个String。然后得到它的位置。 我想在字符串搜索之前和之后裁剪。

String Str1 = "Cats";
String Str2 = "Bear";
String Str3 = "MonkeysDogsCatsPandasPolarBear";

所以它会打印“PandasPolar”

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String str3 = "MonkeysDogsCatsPandasPolarBear";
String str1 = "Cats";
String str2 = "Bear";
Pattern pattern = Pattern.compile("(?<=" + str1 + ")(.*?)(?=" + str2 + ")");
Matcher matcher = pattern.matcher(str3);
if (matcher.find())
{
    System.out.println(matcher.group(1));
}

输出

  

PandasPolar

答案 1 :(得分:0)

最简单/最简单的方法是:

System.out.print(Str3.substring(Str3.indexOf(Str1) + Str1.length(), Str3.indexOf(Str2)));

但是不建议,因为如果使用IndexOutOfBoundsException可能会引发.indexOf() ..

要避免此异常,您可以使用try{ } catch(IndexOutOfBoundsException ex){ },或者您可以在提取自定义短语之前检查两个字符串是否在主字符串中退出,这里有两个方法。

捕捉异常:

try{
    System.out.println(str3.substring(str3.indexOf(str1) + str1.length(), str3.indexOf(str2)));
}catch(IndexOutOfBoundsException ex){
    System.out.println("string Not Found!");
}

提取前检查:

if(str3.indexOf(str1) == -1 || str3.indexOf(str2) == -1) System.out.println("Not Found!");
else System.out.println(str3.substring(str3.indexOf(str1) + str1.length(), str3.indexOf(str2)));

获取未找到的详细信息:

if(str3.indexOf(str1) == -1) System.out.println(str1 + " Was not found in " + str3);
else if(str3.indexOf(str2) == -1) System.out.println(str2 + " Was not found in " + str3);
else System.out.println(str3.substring(str3.indexOf(str1) + str1.length(), str3.indexOf(str2)));

了解字符串substring()方法here和字符串indexOf()方法here