gpt4 book ai didi

java - 在 Java 中实现 Soundex

转载 作者:行者123 更新时间:2023-12-05 07:43:54 25 4
gpt4 key购买 nike

请帮我用java实现字符串相似度比较!使用 org.apache.commons.codec.language.Soundex 库

Soundex soundex = new Soundex();
String phoneticValue = soundex.encode("YourString");
String phoneticValue2 = soundex.encode("YourStrink");

if(phoneticValue.equals(phoneticValue2)){

}

好像不行。如果字符串相似,编码函数会给出不同的结果。如何将两个相似的字符串与该库进行比较?

期待您的来信! ;)

最佳答案

class Soundex{
private static int getConsonantCode( char ch ){
String codeList[] = { "BFPV", "CGJKQSXZ","DT","L","MN","R" };
int code = 0;
for( int i = 0 ; i < codeList.length ; i++ ){
if( codeList[i].indexOf(ch) >= 0 ) {
code = i+1;
}
}
return code;
}
private static boolean isVowel( char ch ){
return (new String("AEIOUaeiou")).indexOf(ch) >= 0 ;
}
public static String getSoundexCode( String str ){
str=str.toUpperCase();
String soundexCode = "" + str.charAt(0), temp="";
int length = str.length();
char curr, prev, next;{ }
String dropList = "AEIOUYHW";
for( int i=1 ; i< length ; i++ ){
curr = str.charAt(i);
prev = str.charAt( i-1 );
if( ( curr=='H' || curr == 'W') && i != length-1 ){
if( temp.length() >= 2) temp=temp.substring(1);
next=str.charAt( i+1 );
if( isVowel(curr) && getConsonantCode( prev ) == getConsonantCode( next ) ){
temp += prev+prev;
i=i+1;
}else if( getConsonantCode( prev ) == getConsonantCode(next) ){
temp += prev;
i=i+1;
}
}else if( getConsonantCode( curr ) != getConsonantCode(prev) ){
if( dropList.indexOf( curr ) == -1 ){
temp += curr;
}
}
}
temp = ( temp + "0000" ).substring( 0, 3 );
for( int i = 0; i<=2 ; i++ ){
soundexCode += getConsonantCode( temp.charAt(i) );
}
return soundexCode;
}
}

关于java - 在 Java 中实现 Soundex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43275987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com