比较Java中的2个字符串到分隔符

时间:2017-04-03 08:13:58

标签: java string compare

字符串1:

func1(test1)

字符串2:

func1(test2)

我想比较这两个字符串到第一个开括号'('。

因此,对于给定的示例,它应该返回true,因为字符串upto'('在两个字符串中都是'func1'。

有没有办法不分裂?

4 个答案:

答案 0 :(得分:4)

String#substring() method会对此案件提供帮助,并结合String#indexOf() method

String x1 = "func1(test1)";
String x2 = "func1(test1)";
String methName1 = x1.substring(0, x1.indexOf("("));
String methName2 = x2.substring(0, x2.indexOf("("));
System.out.println(methName1);
System.out.println(methName2);
System.out.println(methName1.equals(methName2));

答案 1 :(得分:1)

您可以使用String.matches()方法测试第二个字符串是否与第一个字符串中的分割字符串匹配:

String s1 = "func1(test1)";
String s2 = "func1(test2)";
String methName = s1.substring(0, s1.indexOf("("));
System.out.println(s2.matches(methName+ "(.*)"));

这是a working Demo

答案 2 :(得分:1)

您可以使用正则表达式查找任何分隔符之间的所有内容,在您的情况下()并比较结果,例如:

String START_DEL = "\\(";   //the start delimiter
String END_DEL = "\\)";     //the end delimiter

String str1 = "func1(test1)";
String str2 = "func1(test2)";

Pattern p = Pattern.compile(START_DEL + "(.*?)" + END_DEL);//This mean "\\((.*?)\\)"
Matcher m1 = p.matcher(str1);
Matcher m2 = p.matcher(str2);

if (m1.find() && m2.find()) {
    System.out.println(m1.group(1).equals(m2.group(1)));
}

答案 3 :(得分:1)

或者,您可以通过替换'之后的所有内容直接比较字符串('用空字符串。

    String str1 = "func1(test1)";
    String str2 = "func1(test2)";
    System.out.println(str1.replaceAll("\\(.*", "").equals(str2.replaceAll("\\(.*", "")));