我想用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 –