2017-02-25 11 views
1

私の例:ユニコード文字列を複数の文字に分割する方法は?

let $log = console.log; 
 

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

出力:

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

私は(私の目標)に文字列を分割したい:

 
N 
g 
u 
y 
ễ 
n 

T 
h 
a 
n 
h 

T 
ú 

しかし、私はしましたコード内に2つの問題があります。

  1. [ễ]から[ê, ~]に分割されます。代わりに[ễ]が欲しいです。

  2. これは、[ T]から[ T]に分割されます。代わりに[ ,T]が欲しいです。

私も試してみた:

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

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

をそれが最初のケースに同じ結果を記録します。

どのようにこれらの問題を解決できますか?最新のブラウザで

答えて

1

、あなたはString#normalizeを使用することができます。

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

+0

私は私のブラウザ上でそれを実行し、それがなかったので、私はそれがうまくいくと思う唯一の理由です。あなたは違う結果を出していますか?それは面白いだろう。 – gyre

+0

私は十分によく見ていませんでした。正規化する必要があります。 –

+2

ただし、配列に展開する必要はありません。ただ正規化すれば十分です。 OPの 'let ... of'は正規化された文字列に対して、彼らが望む通りに動作します。 –

関連する問題