比较java中的字母

时间:2018-02-01 14:12:05

标签: java compare

我想将文件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();


}

它只计算字符数,而不是不同的字符。

2 个答案:

答案 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;
}