是否有機會對包含德語變音符(如ä,ö,ü)的密碼查詢結果進行排序?目前,我得到一個按字母排序的列表,並且以變音符號開頭的節點放在列表的末尾。通常他們應該在列表中,例如'Ö'應該等於'OE'。使用德語變元對查詢結果進行排序
任何想法表示讚賞,謝謝。
是否有機會對包含德語變音符(如ä,ö,ü)的密碼查詢結果進行排序?目前,我得到一個按字母排序的列表,並且以變音符號開頭的節點放在列表的末尾。通常他們應該在列表中,例如'Ö'應該等於'OE'。使用德語變元對查詢結果進行排序
任何想法表示讚賞,謝謝。
既然你特別問到Cypher支架,下面的查詢是如何umlauted字符排序的例子,就好像他們是他們的結紮等價物(例如,把'''看作'UE')。
WITH ['Dorfer', 'Dörfener'] AS names
UNWIND names AS name
RETURN name
ORDER BY
REDUCE(s = name, x IN [
['ä', 'ae'], ['Ä', 'AE'],
['ö', 'oe'], ['Ö', 'OE'],
['ü', 'ue'], ['Ü', 'UE']] |
REPLACE(s, x[0], x[1]));
上述查詢將首先返回'Dörfener',然後返回'Dorfer'。
但是,上述方法效率不高,因爲它調用REPLACE
函數每個name
六次。在Java中編寫user-defined procedure將整個names
列表作爲輸入並在單個調用中返回排序列表會更有效率。
是的,你可以使用localeCompare或Intl.Collator來實現這一目標:
// Our original array
// Outputs ["u", "x", "ü", "ü", "ü"]
const input1 = ['ü','u','ü','x','ü'];
const output1 = input1.sort();
console.log(output1);
// Intl.Collator
// Outputs ["u", "ü", "ü", "ü", "x"]
const input2 = ['ü','u','ü','x','ü'];
const output2 = input2.sort(Intl.Collator().compare);
console.log(output2)
// localeCompare
// Outputs ["u", "ü", "ü", "ü", "x"]
const input3 = ['ü','u','ü','x','ü'];
const output3 = input3.sort(function (a, b) {
return a.localeCompare(b);
});
console.log(output3)
謝謝山姆,走的路:) – Balael