我想用Java replaceAll(regex, replacement)
方法将给定字符串中的阿拉伯字母Heh(U + 0647)替换为阿拉伯字母Ae(U + 06D5)。我有这样的代码:Java replaceAll不能替换字符串中的字符
String arabicHeh = "\u0647"; // Arabic Letter Heh
String arabicAe = "\u06D5"; // Arabic Letter Ae
String text = txtPane.getText();
String newText = text.replaceAll(arabicHeh, arabicAe);
当我打印newText
变量不会发生任何变化,信arabicHeh
的字符串中仍然存在。
注:该代码的工作,当我把它写在这样:
String newText = text.replaceAll("ه", arabicAe);
换句话说,代码工作时,我让阿拉伯字母嘿本身作为参数传递给replaceAll(regex, replacement)
,但我不想要在我的代码中写入"ه"
本身的字符,因为并非所有IDE都能读取/显示此字符。
我认为arabibHeh
有问题,因为还text.contains(arabicHeh)
评估为false
,同时它肯定包含arabicHeh
,我想可能是从JTextPane
(String text = txtPane.getText();
)获取文本的问题,但是当我打印text
安慰我得到了相同的文字如输入JTextPane
,包括arabicHeh
。
任何人都可以解释为什么text.contains(arabicHeh)
评估为false
或为什么代码在text.replaceAll(arabicHeh, arabicAe)
中不工作?
你应该尝试打印'阿拉伯语'或'阿拉伯语'看看是否正确 – CSK
您应该包含原始的'文字'值 – Andremoniy
对不起,您的回答不明确。 @CSK –