文字列を1文字ずつ配列に入れる【JavaScript】
String.prototype.split()
var str = '分割する文字列';
var ret = str.split('');
console.log(ret); // ["分", "割", "す", "る", "文", "字", "列"]
※2バイトを超える文字を含む場合、問題が発生する
Array.from()
var str = '分割する文字列';
var ret = Array.from(str);
console.log(ret); // ["分", "割", "す", "る", "文", "字", "列"]
スプレッド構文
var str = '分割する文字列';
var ret = [...str];
console.log(ret); // ["分", "割", "す", "る", "文", "字", "列"]
補足(2バイトを超える文字)
2バイトを超える文字(例:絵文字・韓国語・タイ語)を使用する場合、上記のString.prototype.split()
で問題が発生します。具体的な例を次に示します。
var str = '文字列😀';
console.log(str.split('')); // [ "文", "字", "列", "\ud83d", "\ude00" ]
console.log(Array.from(str)); // [ "文", "字", "列", "😀" ]
console.log([...str]); // [ "文", "字", "列", "😀" ]
String
の標準的な関数では、2バイトを超える文字を正常に扱えないため、上記のように2バイトの文字として処理してしまいます。他にも次のような問題があります。
var str = '😀😀😀';
console.log(str.length); // 6
console.log(str[0]); // �
console.log(str.charAt(0)); // �
console.log(str.slice(1, 2)); // �