如何在java中将非越南语或非英语字符转换为英语字符

z4bn682m  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(194)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

7小时前关门了。
改进这个问题
我有一个字符串,例如:

String str = "ČRÔ H'H Test^T MĂKČ@@@";

我想将非越南语或非英语字符转换为英语字符并删除特殊字符。
越南语字符包括:

String VIETNAMESE_DIACRITIC_CHARACTERS = 
"ẮẰẲẴẶĂẤẦẨẪẬÂÁÀÃẢẠĐẾỀỂỄỆÊÉÈẺẼẸÍÌỈĨỊỐỒỔỖỘÔỚỜỞỠỢƠÓÒÕỎỌỨỪỬỮỰƯÚÙỦŨỤÝỲỶỸỴ";

特殊字符包括:

String specialStr = "!@#$%^&*()";

例如,我需要改变:č -> c类;并删除:@
之后,我期望的结果是:crô h'h测试^t măkc公司
我试过:

String normalized = Normalizer.normalize(str, Normalizer.Form.NFD);
        String accentRemoved = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

        List<Character> specialChars = specialStr.chars()
                .mapToObj(c -> (char)c)
                .collect(Collectors.toList());

        return accentRemoved.chars()
                .filter(c -> !specialChars.contains((char) c))
                .collect(StringBuilder::new, (sb, c) -> sb.append((char) c), StringBuilder::append)
                .toString()
                .trim()
                .replaceAll(" +", " ");

但是我得到的结果,越南语字符也会改变,结果是:cro h'h test^t makc
我真的卡住了。你有什么办法帮我吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题