2017-02-25 6 views
1

Mein Beispiel:Wie teilt man eine Unicode-Zeichenfolge in mehrere Zeichen auf?

let $log = console.log; 
 

 
for (let i of 'Nguyễn Thanh Tú') $log(i);

Ausgang:

 
N 
g 
u 
y 
ê 
̃ 
n 
T 
h 
a 
n 
h 
T 
u 
́ 

I (mein Ziel) wollen die Zeichenfolge aufgeteilt:

 
N 
g 
u 
y 
ễ 
n 

T 
h 
a 
n 
h 

T 
ú 

Aber ich habe 2 Probleme im Code.

  1. Es spaltet [ễ]-[ê, ~]. Ich möchte stattdessen [ễ].

  2. Es teilt [ T] zu [ T]. Ich möchte stattdessen [ ,T].

Ich habe auch versucht:

let arr = 'Nguyễn Thanh Tú'.split(''); 
 

 
arr.forEach(x => $log(x));

Es gleiches Ergebnis auf den ersten Fall protokolliert.

Wie kann ich diese Probleme lösen?

Antwort

1

In den neuesten Browsern können Sie String#normalize verwenden:

for (let c of 'Nguyễn Thanh Tú'.normalize()) console.log(c)

+0

Der einzige Grund, warum ich denke, es funktioniert, ist, weil ich es in meinem Browser lief und es tat. Gibt es andere Ergebnisse? Das wäre interessant. – gyre

+0

Ich habe nicht genau genug geschaut, es * muss * normalisiert werden. –

+2

Aber beachten Sie, dass Sie es nicht in ein Array verteilen müssen. Einfach normalisieren ist ausreichend. Die "Let ... of" des OPs arbeitet an der normalisierten Zeichenkette so, wie sie es gewünscht haben. –

Verwandte Themen