var bun = This is a pen
(空白) pen
上記のようにPenだけだして、あとは、空白にして上の行にあるPenの下にPenを入れるには、
どうしたらいいのでしょうか。
bun.match(/pen/);で、Penは出てきますが、Penが先頭にきて、空白がうまく作れません。
Replaceを使ってみましたがだめでした。bun.replace(/^pen/," ")でもだめでした。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
consoleに表示すればいいのでしょうか?
javascript
1var keyword="pen"; 2var bun = "Carpenter opens a pen appended pencil case." 3var result=bun.split(keyword).map(x=>x.replace(/[\S\s]/g," ")).join(keyword); 4console.log(bun); 5console.log(result);
投稿2020/08/13 03:45
総合スコア116740
0
[1] 使用しているフォントが等幅フォントの場合、
現状半角スペースとして出力している文字を「
」に変更してみるといかがでしょうか?
参考URL:
https://www.benricho.org/symbol/tokusyu_01_usefull.html
https://blog.fenrir-inc.com/jp/2011/06/post_51.html
[2] 使用しているフォントが等幅フォントではない場合、
文字の幅がバラバラなので以下のようにする必要があるかもしれません。
HTML
1<p> 2 This is a pen 3</p> 4<p class="text-hide"> 5 This is a <span class="text-show">pen</span> 6</p>
CSS
1p { 2 color: #000; 3} 4.text-hide { 5 color: transparent; 6} 7.text-show { 8 color: #000; 9}
投稿2020/08/12 21:37
総合スコア4528
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
こんにちは
ご質問に挙げられているコードと同様に、正規表現を使った一例を回答します。与えられた bun
に対して、指定した正規表現にマッチしない部分を空白にした文字列を bun2
として作ります。
javascript
1const matches = [...bun.matchAll(/pen/g)]; 2const bun2 = [...bun].map((ch, i) => matches.every(m => i < m.index || i >= m.index + m[0].length) ? ' ' : ch).join('');
- 動作確認用サンプル1: https://codepen.io/jun68ykt/pen/yLOeYxX
以下のように、 matchAll
に与える正規表現を修正することで、規則的な文字列のバリエーションにマッチさせて、それら以外の箇所を空白にすることもできます。
- 動作確認用サンプル2: https://codepen.io/jun68ykt/pen/PoNZZGG
ただし、上記のやり方だと、bun
の各文字のインデクス i
について、matches
に含まれるマッチした区間に含まれていないかを、すべての区間について調べるところが無駄です。以下は、この無駄を行わないコードです。
javascript
1let bun2 = ''; 2const matches = bun.matchAll(/pen/g); 3 4for (const m of matches) { 5 const spaces = ' '.repeat(m.index - bun2.length); 6 bun2 += `${spaces}${m[0]}`; 7} 8 9bun2 += ' '.repeat(bun.length - bun2.length); 10
- 動作確認用サンプル3: https://codepen.io/jun68ykt/pen/NWNxxZM
以上、参考になれば幸いです。
投稿2020/08/12 21:47
編集2020/08/12 23:38総合スコア9058
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/13 14:40
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/13 09:32