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

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

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

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

2539閲覧

jqueryでn番目とn番目を置換したい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/01/10 00:34

下記のようなカンマ区切りのテキストで、n番目とn番目のカンマを|に置換したいです。

例えば、3番目と7番目のカンマを|にreplaceしたい
1,2,3,1,5,4,5,3,6

1,2,3|1,5,4,5|3,6

このような指定するn番目を複数回replaceするには、どのように正規表現を書けばいいですか?

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

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

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

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

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

yambejp

2019/01/10 00:38

質問がダブっているのでどちらかを削除依頼してください
m.ts10806

2019/01/10 00:38

二重投稿になってませんか? 質問は編集・または回答がつく前であれば削除依頼が出せます。 あと、ご自身が試されたコードをご提示ください。
退会済みユーザー

退会済みユーザー

2019/01/10 00:45

申し訳ございません。 スマホから投稿しているのですが、削除依頼のボタンが見つかりません。
m.ts10806

2019/01/10 00:53

スマホブラウザにPC表示切替があればそちらを。 質問投稿するのにスマホからというのはあまりよくないですね。コードまともに投稿できませんし、回答でコードあっても動作確認できませんよね。
papinianus

2019/01/10 00:59

スマホからだとできないかも(全機能が使えないので)
退会済みユーザー

退会済みユーザー

2019/01/10 01:14

>> mts10806さん UA切り替えでもう1つの投稿を削除依頼できました。 ありがとうございます!
guest

回答3

0

ベストアンサー

JavaScript

1str = '1,2,3,1,5,4,5,3,6'; 2alert(str.replace(/((\d,){2}\d),((\d,){3}\d),/g, '$1|$3|'));

投稿2019/01/10 01:18

kunai

総合スコア5405

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

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

退会済みユーザー

退会済みユーザー

2019/01/10 01:24

$で複数指定するやり方があまり理解出来ていなかったです。 勉強になりました! ありがとうございました!
guest

0

javascript

1var arr = [3,7]; 2var ret="1,2,3,1,5,4,5,3,6".split(",").reduce(function(x,y,z){ 3 return x +(arr.indexOf(z)>-1?"|":",")+y; 4}); 5console.log(ret);

投稿2019/01/10 01:41

yambejp

総合スコア114583

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

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

papinianus

2019/01/10 01:50 編集

たしかに、初期値をわたさなければ初項がアキュムレータとして利用されるからindex==0を考慮の外におけますね。
退会済みユーザー

退会済みユーザー

2019/01/10 02:14

なんかスッキリしてますね! ご回答ありがとうございました! reduce... アキュムレータ... 勉強しないとなー...
guest

0

できるとは思いますが、正規表現ですかね?
(いいたい意図は、3番目とか7番目とかいう、人間にとって意味のある情報を何らかの手法で変換しないとできないであろうこと、そうすると可読性・保守性が下がるということです)

javascript

1const repPos = [3,7]; 2console.log("1,2,3,1,5,4,5,3,6".split(",").reduce(((pr,c,i) => pr + (i === 0 ? "" : repPos.indexOf(i) !== -1 ? "|" : ",") + c ),""));

投稿2019/01/10 01:19

編集2019/01/10 01:20
papinianus

総合スコア12705

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

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

papinianus

2019/01/10 01:34 編集

完全にぐちでしかないけど、3番目と7番目がやりたくて、さらにそのn番目を指定したいという質問で、こっちがマイナスかよ 別の回答をdisっている訳ではないが、3,7から、2,3という正規表現上の繰り返し回数を知るには、 ` const pos = [3,7] const p = pos.map((e,i,a) => e - (i === 0 ? 0 : a[i-1]) - 1); ` こういう措置が必要でしょ。
退会済みユーザー

退会済みユーザー

2019/01/10 01:40

やりたいことを読み取っていただき、ありがとうございます! reduceを初めて知りました。 勉強不足ですね、、、 正規表現ではなく、splitして何番目を指定するんですね。 勉強になりました! ありがとうございました!
yambejp

2019/01/10 01:49 編集

三項演算子を二重に利用する必要はないかも・・・ indexOfより今風ならincludes "1,2,3,1,5,4,5,3,6".split(",").reduce((pr,c,i) => pr+(repPos.includes(i)?"|":",")+c)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問