1. ホーム
  2. ジャバスクリプト

[解決済み】文字列をn文字のセグメントに分割するにはどうすればよいですか?

2022-04-15 11:17:37

質問

タイトルの通り、文字列を分割して n の文字が表示されます。

例えば、こんな感じです。

var str = 'abcdefghijkl';

で魔法をかけた後 n=3 となる。

var arr = ['abc','def','ghi','jkl'];

何か方法があるのでしょうか?

どのように解決するのですか?

var str = 'abcdefghijkl';
console.log(str.match(/.{1,3}/g));

使用方法 {1,3} だけでなく {3} のように、3の倍数でない文字列の長さには余りを含めるようにします。

console.log("abcd".match(/.{1,3}/g)); // ["abc", "d"]


あと2つほど微妙なところ。

  1. 文字列に改行が含まれる可能性がある場合 ( 文字列を分割するのではなく、1文字としてカウントしたい場合 )であれば . は、それらを捕捉することはできません。使用方法 /[\s\S]{1,3}/ 代わりに(@Mikeさんありがとうございます)。
  2. もし、文字列が空なら match() が返ってきます。 null は、空の配列を想定している場合です。を追加することで、これを防ぐことができます。 || [] .

ということになりかねません。

var str = 'abcdef \t\r\nghijkl';
var parts = str.match(/[\s\S]{1,3}/g) || [];
console.log(parts);

console.log(''.match(/[\s\S]{1,3}/g) || []);