我正在處理第三方API/Web服務,並且它們只允許在其XML中使用拉丁-1字符集。是否有一個現有的API /方法可以查找並替換字符串中的所有非拉丁-1字符?替換所有非拉丁-1字符的API或方法
例如:凱文
有沒有辦法讓凱文?
我正在處理第三方API/Web服務,並且它們只允許在其XML中使用拉丁-1字符集。是否有一個現有的API /方法可以查找並替換字符串中的所有非拉丁-1字符?替換所有非拉丁-1字符的API或方法
例如:凱文
有沒有辦法讓凱文?
使用ICU4J,
public String removeAccents(String text) {
return Normalizer.decompose(text, false, 0)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
,我發現這個例子在http://glaforge.appspot.com/article/how-to-remove-accents-from-a-string
在Java 1.6的必要的正規化可能被內置。
一個非常好的第一次開始,至少對於給定的例子。但是,不能保證結果將僅爲ASCII,因爲Unicode代碼點不會分解爲ASCII字符並結合區分符號。 – MvG
如果你真的想處理所有晦澀難懂的情況,你將不得不編寫代碼。可能是一個ICU4J轉碼器對象。沒有任何我知道的那種具有所有奇怪的可能性,比如將C DEGREE CELSIUS轉換爲C或 LATIN CAPITAL LETTER L WITH STROKE to L. – bmargulies
或者檢測不可轉換的碼點並通過移除它們來適當地作出響應,中止操作,詢問用戶或其他什麼。 – MvG
用什麼替換它們? – bmargulies
@bmargulies我更新了我的問題 – Gregg
因此,您不希望'K é vin'將它們從字節流中移除(如在簡單文本編輯器中打開它),但實際上將它們從XMl信息集中移除(作爲XML解析器將它讀取到應用程序中)? – MvG