でクエリ結果を並べ替えると、ä、ö、üのようなドイツのウムラウトを含むサイファークエリの結果を並べ替えることができますか?現時点ではアルファベット順のソートリストが得られ、ウムラウトで始まるノードはリストの最後に置かれます。通常、それらはリストの中になければなりません。 'Ö'は 'OE'と等しくなければなりません。ドイツ語のウムラウト
ありがとう、感謝します。
でクエリ結果を並べ替えると、ä、ö、üのようなドイツのウムラウトを含むサイファークエリの結果を並べ替えることができますか?現時点ではアルファベット順のソートリストが得られ、ウムラウトで始まるノードはリストの最後に置かれます。通常、それらはリストの中になければなりません。 'Ö'は 'OE'と等しくなければなりません。ドイツ語のウムラウト
ありがとう、感謝します。
あなたはサイファーについて、具体的尋ねたので、下記のクエリがあるかのように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」を2番目に返します。
ただし、name
ごとにREPLACE
関数を6回呼び出すため、上記の手法はあまり効率的ではありません。 Javaのuser-defined procedureを書くと、names
リスト全体を入力として取り上げ、ソートされたリストを1回の呼び出しで返すほうがはるかに効率的です。
はい、あなたはこれを達成するために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