我想将文件2中的每个字母与文件1进行比较。 例如:
文件1:我的名字
文件2:mi n @ mes
我想在文件2上得到差异的数量是3:(i,@和s)。 你能帮我吗
这是我的代码
public float getCER(String originalteks,String extractteks){
int end=0;
int start=0;
int different_char=0;
if(originalteks.length()!=extractteks.length()){
different_char=Math.abs(originalteks.length()-extractteks.length());
}
while(start<end){
if(originalteks.charAt(start)!=originalteks.charAt(start++))
different_char++;//jumlah diferent chart
}
return (float) different_char/originalteks.length();
}
它只计算字符数,而不是不同的字符。
答案 0 :(得分:0)
这对你有用。我只是在示例中评论我的更改。
s1Sheett.Rows("2:" & currentSheet.Rows.Count).ClearContents
答案 1 :(得分:0)
以下实现测试您需要的总差异,并且能够处理具有不同长度的字符串,方法是将较短的字符串与较长的字符串进行比较,直到它们的差异的最大偏移量。从这些差异中选择最小的。当然,如果handleOffset为false,那么我们仅限于字符串的开头并将差异添加到结果中;
public int getCER(String originalteks,String extractteks, boolean handleOffset){
String shorter = originalteks;
String longer = extractteks;
if (shorter.length() > longer.length()) {
shorter = extractteks;
longer = originalteks;
}
int[] differences = new int[handleOffset ? (longer.length() - shorter.length + 1) : 1];
for (int i = 0; i < differences.length; i++) differences[i] = 0;
for (int i = 0; i < minLength; i++) {
for (j = 0; j < differences.length; j++) {
if (shorter.charAt(i) !== longer.charAt(i + j)) {
differences[j]++;
}
}
}
int min = shorter.length() + 1;
for (int i = 0; i < differences.length; i++) {
if (differences[i] < min) min = differences[i];
}
if (!handleOffset) min += longer.length() - shorter.length();
return min;
}