はじめまして、私はmarkdown記法をJavaScriptで自作しています。
ご相談として次のような文字列の置換実現したいです。
変換前
■ケース1 テキスト中に『**』が偶数個ある場合
- txt1 = "あい**うえお**かきくけこ"
■ケース2 テキスト中に『**』が偶数個ある。さらに複数組の『**』が存在する場合
- txt2 = "あい**うえお**かき**くけこ**"
■ケース3『**』が奇数個しかない場合(このケースは置換されない)
- txt3 = "あい**うえおかきくけこ"
置換後
- txt1 = "あい<em>うえお</em>かきくけこ"
- txt2 = "あい<em>うえお</em>かき<em>くけこ</em>"
- txt3 = "あい**うえおかきくけこ"
私が実施した方法として、まずmatchでテキスト中の『**』を一旦配列に抽出し、lengthで個数をカウントしました。
『**』が奇数個の場合は、置換をせずに出力しますので、txt3のケースは対応できました。
ケース1と2の対応はreplaceAll()
を使い、実現しようと思いました。
私が書いたコードでは全ての『**』が<em>
へ置換されてしまいます。
テキスト中の偶数番目だけ</em>
へ置換する指定が記述できれば解決すると考えていますが、うまく書けていない状況です。
javascript
1txt.match(/\*\*/g).length % 2 === 1 2 ? `<p>${txt}</p>` 3 : `<p>${text.replaceAll(/\*\*/g, "<em>")}</p>`
上記のロジックに沿っていなくても大丈夫です。
解決策をアドバイスいただけると助かります。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー