有效地替換字符串中的所有重音字符?對窮人來說近-排序規則-在客戶端進行正確的排序-我需要一個JavaScript函數高效率字符串中的單個字符替換。這就是我的意思(請注意,這適用于德語文本,其他語言排序不同):native sorting gets it wrong: a b c o u z ? ? ü
collation-correct would be: a ? b c o ? u ü z基本上,我需要將給定字符串的所有“a”替換為“a”(以此類推)。這樣,本機排序的結果將非常接近用戶預期的結果(或數據庫返回的內容)。其他語言也有這樣做的便利:Python用品str.translate(),在Perl有tr/…/…/, XPath有一個函數translate(), ColdFusionReplaceList()..但是JavaScript呢?這是我現在所擁有的。// s would be a rather short string (something like // 200 characters at max, most of the time much less)function makeSortString(s) {
var translate = {
"?": "a", "?": "o", "ü": "u",
"?": "A", "?": "O", "ü": "U" // probably more to come
};
var translate_re = /[??ü??ü]/g;
return ( s.replace(translate_re, function(match) {
return translate[match];
}) );}首先,我不喜歡每次調用這個函數時都會重建正則表達式。我想結束在這方面會有幫助,但我似乎沒有掌握它的訣竅,出于某種原因。有人能想到更有效率的東西嗎?以下答案可分為兩類:不同程度的完整性和效率的字符串替換函數(我最初問的是什么)A 遲提的String#localeCompare,它在JS引擎中得到了廣泛的支持,能夠更優雅地解決這類問題。
有效地替換字符串中的所有重音字符?
墨色風雨
2019-06-24 16:23:05