自動的にひらがな・カタカナが入力されたら「読み仮名」そうでなければ「単語」と認識したいと思って作っていたら、ときどき「ひらがな+カタカナ」だけで構成されている単語があることに気がつきました。(たとえば渋谷の「いかセンター」とか)
kuromojiでせっかく自動的にひらがなに統一していたのが仇になった...
でも、しかたないので「ひらがなカタカナだけが混ざっているものは単語」と認識するメソッドつくりました。もっと簡潔に書ける気がするけど^^;
メソッド名は「isIkasen」いかセンターですか?っていう直球の名前
isIkasen
static boolean isIkasen(String motoString){
boolean res=true;
boolean isHira=false;
boolean switched=false;
char code = motoString.charAt(0);
if(code>=0x3041 && code<=0x3096){
//ひらがなモード
isHira=true;
}else{
if(code>=0x30a1 && code<=0x30fc){
//ひらがな以外、カタカナかそれ以外
isHira=false;
}else{
return false;
}
}
for(int i=1;i<motoString.length();i++){
code = motoString.charAt(i);
if(code>=0x3041 && code<=0x3096 ){
if(isHira==false){
switched=true;
}
continue;
}//ひらがなでひらがなモード
if(code>=0x30a1 && code<=0x30fc){
if(isHira){
switched=true;
}
continue;
}//かたかなでかたかなモード
res=false;
break;
}
//変化してtrue(全部ひらがなかたかなの時だけtrue)
return (res && switched);
}