Измените кириллицы c букв на их произносимую форму - PullRequest
0 голосов
/ 05 августа 2020

Я составляю список слов, содержащий c букв кириллицы, и конвертирую их в их произносимую форму. Например, č = ч = ch, š = ш = sh, ḱ = кј ǵ = ѓ = gj. До сих пор я пытался использовать Unicode-форму и буквы cyrilli c в исходном виде в методе изменения, но каждый раз преобразование терпит неудачу. Последнее изменение, которое я хочу попробовать, - это изменить кодировку. Что я делаю не так?!

  public class Main {
    private  static List<String> passwordList = new ArrayList<>();

    public static void main(String[] args) throws IOException {

       



        String read = null;
        String toBeModified = null;


        try {

            BufferedReader br = new BufferedReader(new FileReader("input.txt"));

            while ((read = br.readLine()) != null) {
                 toBeModified = read;
                passwordList.add(change(toBeModified));
            }
        } catch(Exception e) {
            e.printStackTrace();
        }

      
        save(passwordList);



    }
    public static void save(List<String> passwordList) throws IOException {
        BufferedWriter br = new BufferedWriter(new FileWriter("saved.txt"));
        for (int i = 0; i < passwordList.size(); i++) {
            if (passwordList.get(i).isEmpty() == false) {
                br.write(passwordList.get(i));
                br.newLine();
            }
        }



    }

    //problem here
    public static String change(String str){
       
                String newStr = "";
                if (str.contains("\u010C")){
                     newStr = str.replace("\u010D","ch");
                }else if (str.contains("\u017E")){//U+017E
                     newStr = str.replace("\u017E","zh");
                }else if (str.contains(",")){
                     newStr = str.replace(",","");
                    newStr.trim();
                } else if (str.contains(";")){
                     newStr =  str.replace(";","");
                    newStr.trim();
                } else if (str.contains(".")){
                     newStr = str.replace(".","");
                    newStr.trim();

                } else if (str.contains(":")) {
                     newStr =  str.replace(":","");
                    newStr.trim();
                } else if (str.contains("(\u0160")){
                     newStr =  str.replace("(\u0160", "sh");
                } else if (str.contains("\u1E31")){
                     newStr =  str.replace("\u1E31","kj");
                }else if (str.contains("(")){
                     newStr =  str.replace("(","");
                    newStr.trim();
                }else if (str.contains(")")){
                     newStr = str.replace(")","");
                    newStr.trim();
                    //test to check if works - works like this
//                }else if (str.contains("a")){
//                    newStr = str.replace("a","TestToSeeIfWorks");
                }
                return newStr;

    }

}
...