質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

7090閲覧

Javascript 指定の文字数で改行

shinji389

総合スコア8

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/09/26 23:48

前提・実現したいこと

文字列を指定の文字数ごとに改行して表示し、
指定の文字数に満たない場合はそのまま表示したい。

例 4文字ごとに改行
AAAABBBBCCC 

↓ 

AAAA
BBBB
CCC

発生している問題・エラーメッセージ

3行目でundefinedとなってしまう。

該当のソースコード

const title = AAAABBBBCCC;
const title_4 = title.match(/.{4}/g);

for( let n = 0; n <= title_4.length; n++ ) {
console.log( title_4[n] );
}

試したこと

match()を使っているので条件に合わなくなると表示されなくなるのかと思い
他の方法を考えたがどうすればいいかわからない。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

undefinedになってしまうのはループ回数がおかしいからでしょう。title_4の全要素にアクセスしたいのなら、ループ継続条件はn <= title_4.length ではなく n < title_4.length です。

4文字に満たない部分も同じ様に処理したいなら、正規表現は /.{1,4}/g (最長4文字まででにマッチ)がよいかと思います。

投稿2021/09/27 00:12

編集2021/09/27 00:13
int32_t

総合スコア21695

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinji389

2021/09/27 00:27

ありがとうございました。 /.{1,4}/g で範囲を正確に指定することで解決しました。
guest

0

考え方:

いかに既存のアリもののコピペでササッと済ませるか、をテーマに考えてみました。

'AAAABBBBCCC' を一文字ごとの配列にバラして、4文字ごとに chunk すりゃええ
➡ そしたら、いつものlodash大先生頼み
➡ いや待てよ。。。lodash大先生ごっつかさばるゆうて、最近入れない現場も多いやんな・・・
➡ そしたら、こっちのchunk借りよ。

コード例:

…ゆうことで、こんなん出ましたけど~

javascript

1// 以下より借用 2// https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_chunk 3const chunk = (input, size) => { 4 return input.reduce((arr, item, idx) => { 5 return idx % size === 0 6 ? [...arr, [item]] 7 : [...arr.slice(0, -1), [...arr.slice(-1)[0], item]]; 8 }, []); 9}; 10 11// 上記のchunkを使用して、文字列を4文字ずつ区切った部分文字列の配列を作る。 12const title = 'AAAABBBBCCC'; 13 14const title_4 = chunk([...title], 4).map(a => a.join('')); 15 16console.log(title_4); 17

サンプル

投稿2021/09/27 00:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinji389

2021/09/27 00:31

考え方やコード例まで親切にご教授いただきありがとうございました。 chunkなどまだ知らないことも知ることができ非常に勉強になりました。 今回は元のコードを一部修正するだけで解決したので他の方の回答をベストアンサーに選びましたが また次回も回答いただけましたら幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問