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

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

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

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

Q&A

解決済

2回答

532閲覧

JavaScript 正規表現

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2021/11/12 08:21

下記コードは重複した@***を取り除くものです
単純に@a @aなどの重複は取り除けるのですが@a\r\nも重複として取り除きたいです

結果として@a @b @cが残るようにしたいです
どうしたらいいでしょうか

<script> window.onload=function(){ str="@a @b @a @c @a\r\n @c"; regexp=/@[A-Z0-9]+(\r\n)?/ig; str = str.replace(regexp, (m, i) => str.indexOf(m) === i ? m.trim() : ''); alert(str); } </script>

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

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

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

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

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

maisumakun

2021/11/12 08:38

単純に、「事前に\r\nを取り除いておく」ような方法では対応できないのでしょうか?
guest

回答2

0

ベストアンサー

以下でどうでしょう?

(1) 正規表現に含まれる @[A-Z0-9]+ の部分もキャプチャするように、@[A-Z0-9]+ を丸カッコでくくる。

diff

1- regexp=/@[A-Z0-9]+(\r\n)?/ig; 2+ regexp=/(@[A-Z0-9]+)(\r\n)?/ig;

(2) replace の第二引数として与えるアロー関数を以下のように修正

diff

1- str = str.replace(regexp, (m, i) => str.indexOf(m) === i ? m.trim() : ''); 2+ str = str.replace(regexp, (_m, p1, _p2, i) => str.indexOf(p1) === i ? p1 : '');

アロー関数の引数の中で使用しないものは慣例にならい、 _m_p のように先頭にアンダバーを付けています。

???? サンプル

投稿2021/11/12 09:41

編集2021/11/12 09:48
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/11/12 10:44

この度もどうもありがとうございます。。 無事目的の動作になりました。。 自分で理解できるまでには時間を要しますが頑張ります。。
退会済みユーザー

退会済みユーザー

2021/11/13 02:14 編集

guest

0

正規表現だと厳しいので、結果が同じになるようなコードのサンプルを作成してみました。

js

1let str = "@a @b @a @c @a\r\n @c"; 2 3str = str.split(/\s+/).filter((chunk, index, chunkList) => (index === chunkList.findIndex((c) => (c === chunk)))).join(" "); 4 5alert(str);

投稿2021/11/12 08:52

KAOsaka

総合スコア531

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

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

退会済みユーザー

退会済みユーザー

2021/11/12 10:44

ありがとうございます。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問