例
あなたは30日間ログインしていません
これを「あなたは」「30」「日間ログインしていません」に分割したいです。
数字は可変です。
詳細
実際の実装では数値だけに下線やリンクをつけたいです。
propsで渡された文字列の中に数値が存在している場合のみ分割して、独自のタグを付与する予定です。
目指したいコード
JavaScript
1const message = 'あなたは30日間ログインしていません'; 2const divide = message.関数 3 4<div>{divide[0]}<span>{divide[1]}</span>{divide[3]}</div>
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
分けたいのが「数字以外で構成された部分」「数字のみで構成された部分」「数字以外で構成された部分」
ということであれば、正規表現で
([^0-9]*)([0-9]+)([^0-9]*)
に合致する文字列と言うことになるでしょうから、
あとは JavaScript の RegExp を使って処理しましょう。
※match の結果がnullになるのであれば、それは「数字の部分がない文字列」であることを示すので、いかようにでも対応できるはずです
投稿2018/10/05 08:31
総合スコア13703
0
ベストアンサー
要件定義をしっかり行ってから作ります。
- 数字が複数ある場合
- 数字で始まる場合
- 数字が存在しない場合
JavaScript
1'use strcit'; 2console.log('あなたは30日間ログインしていません'.match(/\d+|\D+/g)); // ["あなたは", "30", "日間ログインしていません"] 3console.log('最終ログイン日時は2018年7月25日です'.match(/\d+|\D+/g)); // ["最終ログイン日時は", "2018", "年", "7", "月", "25", "日です"] 4console.log('2018年7月25日'.match(/\d+|\D+/g)); // ["2018", "年", "7", "月", "25", "日"] 5console.log('今回が初めてのログインです'.match(/\d+|\D+/g)); // ["今回が初めてのログインです"] 6 7console.log('あなたは30日間ログインしていません'.split(/(\d+)/)); // ["あなたは", "30", "日間ログインしていません"] 8console.log('最終ログイン日時は2018年7月25日です'.split(/(\d+)/)); // ["最終ログイン日時は", "2018", "年", "7", "月", "25", "日です"] 9console.log('2018年7月25日'.split(/(\d+)/)); // ["2018", "年", "7", "月", "25", "日"] 10console.log('今回が初めてのログインです'.split(/(\d+)/)); // ["今回が初めてのログインです"]
Re: parapa さん
投稿2018/10/05 12:17
総合スコア18164
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/07 07:48 編集
0
... 数値が存在している場合のみ分割して、独自のタグを付与する予定です。 ...
それがゴールなら、文字列を分割するしなくでもできるとおもいます。
正規表現で 数字文字列をみつけて、それを
<span class=number>数字文字列</span>
などに文字列置換すれば良いです。
参考情報
- JavaScriptの正規表現 各メソッド
投稿2018/10/06 09:04
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。