字符串1:
func1(test1)
字符串2:
func1(test2)
我想比较这两个字符串到第一个开括号'('。
因此,对于给定的示例,它应该返回true,因为字符串upto'('在两个字符串中都是'func1'。
有没有办法不分裂?
答案 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+ "(.*)"));
答案 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("\\(.*", "")));