【发布时间】:2020-01-19 18:33:48
【问题描述】:
我想比较两个字符串,它们之间有不同的分隔符。
例子
String s1 = "ZZ E5 - Pirates of carribean";
String s2 = "ZZ E5 : Pirates of carribean";
我想比较两个字符串是否相等。
我已经尝试在 Java 中使用正则表达式来解决这个问题,
String pattern = "(.*)[:-](.*)";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(s1);
Matcher m1 = r.matcher(s2);
if (m1.find()&&m.find()) {
System.out.println("Found value: " + m.group(1));
System.out.println("Found value: " + m.group(2));
System.out.println("Found value: " + m1.group(1));
System.out.println("Found value: " + m1.group(2));
System.out.println(m.group(1).contentEquals(m1.group(1)));
System.out.println(m.group(2).contentEquals(m1.group(2)));
} else {
System.out.println("NO MATCH");
}
这是一个好方法还是我们可以通过其他有效的方式来做到这一点?
【问题讨论】:
-
在正则表达式中,您必须编译它 1 次,并根据需要多次使用它。我更喜欢正则表达式而不是字符串方法。但是正则表达式也是魔鬼。因此,如果性能不是问题,请使用字符串方法。或在使用正则表达式时采取额外的预防措施。
-
我想知道当电影的标题像
"Star Wars: Episode IV - A New Hope"这样时会有什么期望。