是否有任何方法可以動態替換如下所示的重音字符?使用ColdFusion替換所有重音元音
requesón => requeson
我的意思是,每一個重音(或其他)字符將與正常的更換。
這可能使用ColdFusion?
是否有任何方法可以動態替換如下所示的重音字符?使用ColdFusion替換所有重音元音
requesón => requeson
我的意思是,每一個重音(或其他)字符將與正常的更換。
這可能使用ColdFusion?
您可以通過java文本規範化和正則表達式修復重音字符。有上cflib一個函數,已經做了這個:
來源:http://cflib.org/udf/deAccent
function deAccent(str){
//based on the approach found here: http://stackoverflow.com/a/1215117/894061
var Normalizer = createObject("java","java.text.Normalizer");
var NormalizerForm = createObject("java","java.text.Normalizer$Form");
var normalizedString = Normalizer.normalize(str, createObject("java","java.text.Normalizer$Form").NFD);
var pattern = createObject("java","java.util.regex.Pattern").compile("\p{InCombiningDiacriticalMarks}+");
return pattern.matcher(normalizedString).replaceAll("");
}
該函數的最後兩行可以合併成一個:'return normalizedString.replaceAll(「\ p {InCombiningDiacriticalMarks} +」,「」);' –
看看NFD形式的變化 - 這裏有一個規範:http://www.unicode.org/reports/tr15/tr15-23.html#Decomposition - 它不能代替'ß',但如果我嘗試搜索在文檔中,但愚蠢的Chrome瀏覽器正在尋找'ss' - 它出現了超過一百次。 :/ –
我知道,你可以使用正則表達式_remove_特殊字符,但不知道更換。這意味着你需要爲每個角色進行一些映射,而且這是替代。你正在處理你知道的有限數量的角色,還是你想要替換遇到的任何特殊角色? –
我需要替換找到的每一個特殊字符,但我認爲這會很困難。所以我已經在考慮替換知道特殊字符的選項。 – Jordelca
也有一些正則表達式可以選擇,例如「e」及其所有特殊字符。然後我可以用正常的替換它們。 – Jordelca