• ベストアンサー
  • 暇なときにでも

文字列の置換

お世話になります。 このような文字列置換可能でしょうか '&nbsp;&nbsp;|&nbsp;&nbsp;<a href=・・・>(・・・' ・・・は、任意の文字列 を '&nbsp;&nbsp;<a href=・・・>(・・・' と、いうようにです。 つまり、文字列の中に'|&nbsp;&nbsp;'と、'('が有ったら、 '|&nbsp;&nbsp;'のみを取り除いた文字列を作成する と、いうことです。 そして、文字列中に同様なパターンが複数回有れば、同時に全てを同様に処理したいのですが。 よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数557
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • UKY
  • ベストアンサー率50% (604/1207)

例えばこんな感じですか var str = '&nbsp;&nbsp;|&nbsp;&nbsp;<a href=XXX>(YYY' str = str.replace(/\|&nbsp;&nbsp;(?=.+?\()/g, ""); alert(str); ただし、この例では '|&nbsp;&nbsp;' の後に '(' が出てくるかという判断しかしていないので、複数の '|&nbsp;&nbsp;' と '(' が一対一に対応していなくても '|&nbsp;&nbsp;' が削除されます。 また、'|&nbsp;&nbsp;' と '(' の間に一文字も無い場合は置換しないようになっています。'|&nbsp;&nbsp;' と '(' が引っ付いていても置換するには + を * に変えてください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

UKYさん、ありがとうございます。 >複数の '|&nbsp;&nbsp;' と '(' が一対一に対応していなくても '|&nbsp;&nbsp;' が削除されます。 そうなりました。 複数の '|&nbsp;&nbsp;' と '('が一対一に対応している部分と、'|&nbsp;&nbsp;'だけの部分が有り、 一対一に対応している部分のみの'|&nbsp;&nbsp;'を削除したいのですが、難しいでしょうか。

その他の回答 (2)

  • 回答No.3
  • UKY
  • ベストアンサー率50% (604/1207)

一対一対応のみ置換するパターンだとこんな風になります。 // 左側を優先して削除 var str = '&nbsp;&nbsp;|&nbsp;&nbsp;AAA|&nbsp;&nbsp;<a href=XXX>(YYY'; str = str.replace(/\|&nbsp;&nbsp;(.+?\()/g, "$1"); alert(str); // 右側を優先して削除 var str = '&nbsp;&nbsp;|&nbsp;&nbsp;AAA|&nbsp;&nbsp;<a href=XXX>(YYY'; str = str.replace(/\|&nbsp;&nbsp;((?:(?!\|&nbsp;&nbsp;).)+?\()/g, "$1"); alert(str); 優先順位の違いに応じて二パターン作りましたが、たぶん質問者さんが望んでいるのは後者の方かと思います。 ちょっと正規表現が複雑になってしまいました。もしかしたらもっとうまいやり方があるかもしれません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

UKYさん、お早うございます。 できました。ありがとうございます。 >// 右側を優先して削除 の方そのものです。 ご丁寧に教えていただいて、厚かましいですが、 正規表現について勉強するための HP、書籍などご紹介いただけないものでしょうか。 この質問をする前にも正規表現について調べたのですが、見つけることができませんでした。 もし、できましたらよろしくお願いいたします。

  • 回答No.1
noname#20964
noname#20964

これでどうでしょうか。 a="'&nbsp\;&nbsp\;|&nbsp\;&nbsp\;|&nbsp\;&nbsp\;<a href=・・・>\(・・・'"; b=a.match(/\|&nbsp\;&nbsp\;/g)!=null; c=a.match(/\(/g)!=null; if(b&&c){ d=a.replace(/\|&nbsp;&nbsp;/g,""); alert(d); }else{ alert(a); }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お早うございます。 早速ありがとうございます。 「文字列の中に'|&nbsp;&nbsp;'と、'('が有ったら、 '|&nbsp;&nbsp;'のみを取り除いた文字列を作成する」 と、いう私の説明が悪かったです。 「文字列の中に'|&nbsp;&nbsp;'と、'('で、文字列が囲まれていたら、囲まれている文字列と'('はそのままで、'|&nbsp;&nbsp;'のみを取り除いた文字列を作成する」 と、いうように説明しなけれなりませんでした。 つまり、教えていただいた方法ですと、 '|&nbsp;&nbsp;'と、'('で、文字列が囲まれていなくても'|&nbsp;&nbsp;'が全て削除されてしまいました。 説明が悪くて申し訳ありませんでした。

関連するQ&A

  • 文字列の置換で・・・

    Javaでの文字列の置換についてなんですが ある文字を任意の文字に置換し表示させるとともに 何個の文字を置換したかも同時に知らせたい場合は どのような処理をしたらよいでしょうか? ぜひご協力よろしくお願いします!! (例)入力した文字列に"a"が含まれる場合は"b"に置換し   その際に変換した文字数も表示してください。     basic→出力結果: "bbsic" 置換した文字数は1です。

    • ベストアンサー
    • Java
  • 任意の文字列で囲まれていない任意の文字列を置換するには

    任意の文字列で囲まれていない任意の文字列を置換したいです。 たとえば、『 [[ 』と『 ]] 』で囲まれていない『http://hogehoge/』を『<a href="http://hogehoge/">http://hogehoge/</a>』に置き換えるにはどうすればいいのでしょうか。 具体的には下記の【置換前】のテキストを【置換後】のような感じにしたいです。 【置換前】 http://hogehoge/ [[http://hogehoge/]] http://hogehoge/ http://hogehoge/ [[http://hogehoge/]] 【置換後】 <a href="http://hogehoge/">http://hogehoge/</a> [[http://hogehoge/]] <a href="http://hogehoge/">http://hogehoge/</a> <a href="http://hogehoge/">http://hogehoge/</a> [[http://hogehoge/]] preg_replaceかereg_replaceのどちらかで例を挙げてもらえるとありがたいです。ご教示お願いします。

    • ベストアンサー
    • PHP
  • エクセルで特定のパターンの文字列を置換

    大量の文字列が入力されたスプレッドシートがあります。 この文字列の中に、特定のパターンの文字列が散在しています。 ここでは例として、 #○○▲××$ とします。 「○○」と「××」は任意の文字列で、「#」「▲」「$」が特定文字列です(エスケープみたいなものですね)。 ここで以下のような置換を行いたいと思っています。 #○○▲××$ ↓ ××(○○) 「○○」と「××」は多種多様なので、単なる置換機能では対応できません(一個一個やっていけば別ですが、現実的ではないので……)。 こういった置換を一気に行うよい方法があればご教示頂きたく思います。 よろしくお願い申し上げます。

  • 文字列の置換

    変数に含まれる isbn:・・・・ asin:・・・・ という文字列を <a href="http://<略>/・・・・/">isbn:(asin:)・・・・</a> と置換したいのですがどのように処理すればいいかわかりません。 isbn,asinは半角で大小文字の区別は無し :の後はアルファベット・数字・_です。

  • 長い文字列の置換を出来るエディタを教えてください。

    数式Texのコマンドなんですが、1000文字の文字列を1500文字の文字列に置換しようとしたところ、255バイト以上のデータはきられてしまい、正常に置換できませんでした。 秀丸、Wordのソフトウェアや複数行置換のフリーウェアを探したのですが、正常に置換できませんでした。 このように1000文字を1500文字への置換等、長い文字列を置換できるソフトウェアがあれば教えてください。

  • 複数の文字列を同時に置換できるソフト

    こんにちは。 複数の文字列を一括で置換できるソフトで、 以下の条件に合ったソフトを探しております。 (1)HTMLファイルが読み込める。 (2)複数の文字列を同時に一括置換できる(複数行を対象に)。 (↑あらかじめ置換したいリストを作成・登録する形に なるのかもしれません。) (3)さらに複数のファイルで同時に置換できる。 上記の(1)、(2)は必須になります。 可能であれば、(3)ができれば大変助かります。 ・・以上のようなフリーソフトはありますでしょうか? ご回答よろしくお願い致します。

  • jqueryで文字列を置換したいのですが。

    jqueryで文字列を置換したいのですが。 例えば<a href="http://*****/database.cgi?keys10=検索文字01"> みたいなアンカーがあったとして、これの”検索文字”の部分のみを置換して 例えば<a href="http://*****/database.cgi?keys10=検索文字02"> の様に置換することは可能でしょうか。 何卒、宜しくお願いいたします<m(_ _)m>

  • 文字列の置換

    文字列の置換 たとえば, if(abcd) という文字列があったときに,これを while(abcd){ に置換するにはどうすればいいでしょうか(同じような置換をしたいところが文章中にいくつもあるとします).つまり,文字列の一部をそのままにして置換するということです.いまの場合だと if( → while( はできたとしても, ) → ){ は,文章中に“)”がたくさんある場合は難しいですよね.wordなら,ワイルドカードを使って if(*) とすれば,検索はできるのですが,そのまま置換すると while(*){ となってしまい,*がそのまま残ってしまいます.どうにかできないでしょうか?

  • ファイル内の文字列を置換

    掲示板利用させていただきます。 現在、ファイル内の特定の文字列を置換し、 保存する方法を探しています。 できればスクリプト言語を利用したいと考えています。 sedコマンドを使用して文字列置換を行ったのですが 置換前と置換後のファイルで 文字コードと改行コードが変わってしまうのでダメでした; 「ファイル内の特定の文字列を任意の文字列に置換し、置換前と置換後で改行コードと文字コードを変えない方法」 をご存知の方、ご教示ください。 bash,perl,javaのどれでも結構です。 よろしくおねがいします。

  • 文字列の置換

    JAVAであるファイル内の文字列を置換するプログラム(日本語)を作りたいのですが、 ・ ・ String h_s; FileReader h_fr = new FileReader(in_filename); BufferedReader h_br = new BufferedReader(h_fr); while(true){  h_s = h_br.readLine();  if (h_s == null){   break;  }  ●文字列を置換するプログラム● } ・ ・ ここの●文字列を置換するプログラム●にあたる適当な関数って何かありますか? たとえばperlでいうと↓みたいなものなのですが・・・ s/置換前文字/置換後文字/g よろしくお願いします。

    • ベストアンサー
    • Java