如何比较2个字符串以返回Java中匹配的数量的int?
我有一个"彩票号码"这是一个UUID,看起来像561637ba-06f6-4457-9787-ba65768c1b73我会将它与另一个字符串比较,如72c92628-5789-4d5c-9287-742dbc57cca9,其中不包括 - 将是5个匹配的字符。会有一种更简单的方法来简单地循环每一个字符吗?
答案 0 :(得分:3)
假设两个字符串具有相同的长度,这就像它得到的那样好:
public static int numberMatchingChars(String s1, String s2) {
int count = 0;
for (int i = 0; i < s1.length(); i++)
if (s1.charAt(i) == s2.charAt(i) && s1.charAt(i) != '-')
count++;
return count;
}
显然,你必须遍历两个字符串上的每个字符。
答案 1 :(得分:0)
不确定这是否会改善问题,并假设两个字符串具有相同的长度和格式,但无论如何,从技术上讲,您不需要访问每个字符。
String arr1[] = s1.split ("-");
String arr2[] = s2.split ("-");
int totCount = 0;
for (int x = 0; x < arr1.length; x++) {
if (arr1[x].equals (arr2[x]) == false) {
// compare char by char for arr1[x] to arr2[x]
totCount += numberMatchingChars(arr1[x], arr2[x]);
}
}
public static int numberMatchingChars(String s1, String s2) {
int count = 0;
for (int i = 0; i < s1.length(); i++)
if (s1.charAt(i) == s2.charAt(i))
count++;
return count;
}