将Java中的两个字符串比较到一个分隔符
字符串1:将Java中的两个字符串比较到一个分隔符,java,string,compare,Java,String,Compare,字符串1: func1(test1) 字符串2: func1(test2) 我想将这两个字符串与第一个大括号“(”进行比较 因此,对于给定的示例,它应该返回true,因为两个字符串中最长为“(”的字符串都是“func1” 有没有不拆分的方法呢?String#substring()与String#indexOf() 您可以使用方法测试第二个字符串是否与第一个字符串中拆分的字符串匹配: String s1 = "func1(test1)"; String s2 = "func1(test2)";
func1(test1)
字符串2:
func1(test2)
我想将这两个字符串与第一个大括号“(”进行比较
因此,对于给定的示例,它应该返回true,因为两个字符串中最长为“(”的字符串都是“func1”
有没有不拆分的方法呢?String#substring()
与String#indexOf()
您可以使用方法测试第二个字符串是否与第一个字符串中拆分的字符串匹配:
String s1 = "func1(test1)";
String s2 = "func1(test2)";
String methName = s1.substring(0, s1.indexOf("("));
System.out.println(s2.matches(methName+ "(.*)"));
这是。您可以使用regex查找任何分隔符之间的所有内容,在您的情况下,
()
并比较结果,例如:
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)));
}
或者,您可以直接比较字符串,方法是将“(”之后的所有内容替换为空字符串
String str1 = "func1(test1)";
String str2 = "func1(test2)";
System.out.println(str1.replaceAll("\\(.*", "").equals(str2.replaceAll("\\(.*", "")));
在这种情况下,子字符串会有所帮助如果你真的不想拆分,你也可以编写一个循环,循环遍历每个字符,但这没有多大意义……我想你可以从子字符串中删除0部分:)将是简短的HI@ANS,谢谢你的评论!!我认为OP想要比较方法名称,删除子字符串中的0部分将比较方法参数。。。。
String str1 = "func1(test1)";
String str2 = "func1(test2)";
System.out.println(str1.replaceAll("\\(.*", "").equals(str2.replaceAll("\\(.*", "")));