🦭
文字列を区切ると空文字が生成される
2025/07/28追記
コメントいただきありがとうございました
タイトルの件、どうしてなのか納得できたので、一部編集しました
コメントいただいた方法が一番簡潔だなあと思います...
const text = 'なんかのエラーです。もう一度懲りずにやり直してください。';
const sentence = text.split('。');
console.log(sentence);
// (3) ['なんかのエラーです', 'もう一度懲りずにやり直してください', '']
最後に空文字ができるの、なぜなのかよく分からず...
日本語が原因なのかと思いましたが、関係ないようです
const text = 'nankanoeradesu.mouichidokorizuniyarinaoshitekudasai.';
const sentence = text.split('.');
console.log(sentence);
// (3) ['nankanoeradesu', 'mouichidokorizuniyarinaoshitekudasai', '']
const text = 'There was some kind of error.Please try again.';
const sentence = text.split('.');
console.log(sentence);
// (3) ['There was some kind of error', ' Please try again', '']
結論
文字列を指定文字列で区切ると空文字が生成されるのは標準なので、
空文字いらないとなったら削除するほかなさそうでした
区切り文字に指定した文字が出てくるたびにsplit()の処理が走り
一番最後に区切り文字があった場合、その位置で
分割されて空文字ができるとのことでした
(コメントありがとうございました...!)
const text = 'なんかのエラーです。もう一度懲りずにやり直してください。';
const sentence = text.split('。').filter(x => x);
console.log(sentence);
// (2) ['なんかのエラーです', 'もう一度懲りずにやり直してください']
蛇足
区切り文字は削除されてしまうので区切り文字ごと欲しいとなったら
区切り文字専用で用意するか、再度区切り文字を設定するかなどなど工夫が必要です
// 専用区切り文字を用意
const text = 'なんかのエラーです。¥もう一度懲りずにやり直してください。';
const sentence = text.split('¥');
console.log(sentence);
// (2) ['なんかのエラーです。', 'もう一度懲りずにやり直してください。']
// 再度区切り文字を設定
const text = 'なんかのエラーです。もう一度懲りずにやり直してください。';
const sentence = text.split('。').filter(x => x).map((message) => { return `${message}。` });
console.log(sentence);
// (2) ['なんかのエラーです。', 'もう一度懲りずにやり直してください。']
Discussion
split('。')とすると。が出てくるたびにsplit()の処理が走るので、一番最後の。の位置でも分割されます。。を入れるために区切り文字を他の文字にするなら、一箇所だけでOKです。正規表現を使う手もありそうです。
これがいちばん期待に沿っているのではないでしょうか?