我試圖讓功能,將刪除變音符號(不想使用正規化的目的)。功能看起來像的Java刪除變音
private static String normalizeCharacter(Character curr) {
String sdiac = "áäčďéěíĺľňóôőöŕšťúůűüýřžÁÄČĎÉĚÍĹĽŇÓÔŐÖŔŠŤÚŮŰÜÝŘŽ";
String bdiac = "aacdeeillnoooorstuuuuyrzAACDEEILLNOOOORSTUUUUYRZ";
char[] s = sdiac.toCharArray();
char[] b = bdiac.toCharArray();
String ret;
for(int i = 0; i < sdiac.length(); i++){
if(curr == s[i])
curr = b[i];
}
ret = curr.toString().toLowerCase();
ret = ret.replace("\n", "").replace("\r","");
return ret;
}
funcion被稱爲像這樣(從文件中的每個charracter發送到該功能)
private static String readFile(String fName) {
File f = new File(fName);
StringBuilder sb = new StringBuilder();
try{
FileInputStream fStream = new FileInputStream(f);
Character curr;
while(fStream.available() > 0){
curr = (char) fStream.read();
sb.append(normalizeCharacter(curr));
System.out.print(normalizeCharacter(curr));
}
}catch(IOException e){
e.printStackTrace();
}
return sb.toString();
}
文件text.txt
包含此:ľščťžýáíéúäôň
,我希望lcstzyaieuaon
從程序回報,但insted的預期字符串我得到這個¾è yaieuaoò
。我知道這個問題在編碼的某個地方,但不知道在哪裏。有任何想法嗎 ?
提示代碼質量:像sdiac,bdiac這樣的名字是很可怕的。給出事情的名稱,告訴他們是什麼。只需更改名稱即可使代碼更具可讀性!例如,爲什麼不把s和b變成常量? (所以不需要創建數組,並在任何時候拋出這些方法被調用)[我認爲這種方法可能被稱爲...好吧,經常?!] – GhostCat
變量名稱是我的語言和這個東西只是測試階段,所以現在代碼的速度並不重要(至少對我而言)。只有10行代碼我相信every1會理解它。無論如何,你的帖子並沒有解決我的問題。但是thx – TomP
您在此處編寫此代碼以供其他人閱讀**。所以你認爲如果它很容易閱讀或難以閱讀,這並沒有什麼不同。就像「其他人可以爲我工作,嘿,爲什麼我應該讓自己的生活更輕鬆」。 也許你最好再思考一下,如果這樣的思維模式是轉換的最佳起點。這甚至是出於您自己的利益:您希望人們關注您的**問題**;不瞭解源代碼。代碼越容易閱讀,越多的人會完全閱讀它來幫助你。閱讀越難,越多的人會轉身離開,而不是打擾。 – GhostCat