将 Java 中的 2 个字符串与分隔符进行比较



字符串 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)));
}

相关内容

  • 没有找到相关文章

最新更新