关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
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
我真的卡住了。你有什么办法帮我吗?
暂无答案!
目前还没有任何答案,快来回答吧!