字符串 1:
func1(test1)
字符串 2:
func1(test2)
我想将这两个字符串与第一个左大括号"("进行比较。
因此,对于给定的示例,它应该返回 true,因为两个字符串中直到 '(' 的字符串都是 'func1'。
有没有办法在不分裂的情况下做到这一点?
String#substring()
方法在这种情况下会有所帮助,这与String#indexOf()
方法相结合
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));
您可以使用 String.matches(( 方法来测试第二个字符串是否与第一个字符串的拆分字符串匹配:
String s1 = "func1(test1)";
String s2 = "func1(test2)";
String methName = s1.substring(0, s1.indexOf("("));
System.out.println(s2.matches(methName+ "(.*)"));
这是一个工作演示。
或者,
您可以通过将"("之后的所有内容替换为空字符串来直接比较字符串。
String str1 = "func1(test1)";
String str2 = "func1(test2)";
System.out.println(str1.replaceAll("\(.*", "").equals(str2.replaceAll("\(.*", "")));
您可以使用正则表达式查找任何分隔符之间的所有内容,在您的情况下()
并比较结果,例如:
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)));
}