• ベストアンサー

replace()での文字列置換について

お世話になります。 replace()で文字列置換をするとき、 sentAry=new Array("aabb()c()bbc","・・・", sent=sentAry[0]; で、 sent=sent.replace("()","(   )") と、すると、 sent="aabb(   )c()bbc;" と、なることを期待したのですが、 sent="aabb(   )c(   )bbc;" と、なってしまいました。 つまり全ての()が(   )に変換されてしまいました。 マッチングした全ての文字列か、マッチングした最初の一つだけか が、グローバル検索のg属性と、いうものにより異なるというような記載を見つけましたが、 だからと、いってどのようにすればよいのか 一向にわかりません。 どなたか、わかる方見えましたら、よろしくご教示お願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

質問文でやられているように、実行した場合、一つめだけが変換されました。おそらく、質問文で書かれているのとは、別の方法を使われているのではないかと思います。が なんでしたら、以下の文を試してみてください。 sent=sent.replace(/\(\)/,"(   )"); ----------------------------------------------- sent=sent.replace(/\(\)/g,"(   )"); のようにすると、全部を置き換えます。

rqg2010
質問者

お礼

BLUEPIXYさん、ありがとうございます。 ご指摘の通りです。 gの使い方もわかりました。 どうもありがとうございました。

その他の回答 (1)

  • fire--
  • ベストアンサー率49% (146/293)
回答No.1

http://www.tohoho-web.com/js/regexp.htmによると、 正規表現をperl風に書けるようです。 試してないですが、たぶん以下で動くと思います。 sent=sent.replace(/()/,"(   )");

rqg2010
質問者

お礼

fire--さん、ありがとうございます。 できました。

関連するQ&A

  • 「?」の入った文字列置換を、RegEx.Replaceで行いたい

    WSHを使い、あるhtmファイルの中にある特定の文字列を、RegEx.Replaceを使って置換しようとしています。通常の文字列置換についてはなんとか成功しているのですが、下記のケースで壁に当たっています。前に進める為にはどうしたらよいか、ヒントをご存知の方がいれば大変有り難く思います。 今回作業の特徴としては 1)置換前の文字列の中にメタキャラ「?」が含まれており、 2)置換前の文字列は、DBから読み込んできた文字列である の2点です。(ちなみに1だけでは成功しているのですが、1と2が組み合わさると上手くいきません) 具体的には、下記のサンプルで置換前の文字列を url_before = "test.asp\?param=999" (?についてはエスケープ文字付与) のように明示的に書いてやると置換に成功しました。ところがDBから取得してきた文字列で置換をしようとしても失敗となります。 たとえばrs.fields("item")の中身が"test.asp?param=999"だったとして、先ほどの箇所を url_before = replace(rs.fields("item"), "?", "\?") とすると、置換されないのです。 '----- サンプル ----- Set fso = CreateObject("Scripting.FileSystemObject") Set regEx = New RegExp Set inFile = fso.OpenTextFile("c:\hoge\test1.htm") Set outFile = fso.CreateTextFile("c:\hoge\test1_wk.htm") ◆動くケース:url_before = "test.asp\?param=999" ◆動かないケース:url_before = replace(rs.fields("item"), "?", "\?") url_after = "test_999.htm" regEx.pattern = url_before repStr = url_after Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close

  • ◆文字列内の複数置換

    いつもお世話になっています。 置換についてご教授下さい。 文字列($str)を置換して$afterのように変換させたいです。 配列($patterns)で置換のパターンは持っています。 $str = "あF03いうえF02おF01"; $patterns = array("F01" => "A", "F02" => "B", "F03" => "C"); $after = "あCいうえBおA"; 宜しくお願い致します。

    • 締切済み
    • PHP
  • 文字列のアスタリスク置換

    PHP4でDBはMySQLを使用しています。 DBから取り出したいろいろな長さの文字列を*に置換したいのですがどのようにしたら良いでしょうか。 str_replaceを用いて置換をしようとしていますが文字列長が一定でないため難しいです。 宜しくお願い致します

    • ベストアンサー
    • PHP
  • 文字列の置換

    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
  • 文字列の置換で・・・

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

    • ベストアンサー
    • Java
  • ダブルクォーテーションのreplaceの方法

    JavaScriptで文字を置換する際に AAA = new String(AAA).replace(/ZZZ/g, "QQQ"); にしますよね、これで文字列中のダブルクォーテーション「"」を 任意の文字に変換したいのですが、何か良い方法はないでしょか? よろしくお願いします。

  • DB2でREPLACEによる文字列の置換

    ODBC経由でPHPからDB2にアクセスしているのですが 電話番号から「-」を除いて比較しようとして 「 SELECT * FROM TABLE WHERE REPLACE(TEL,'-','') = '09012345678' 」 というSQL文を送信しても 「 *LIBLのタイプ*NのREPLACEが見つからない。 」 というエラーメッセージが返されます。 DB2にはREPLACE関数が存在しないのでしょうか? もし存在しないのでしたら文字列を置換する関数は何を使えばよいのか教えて頂けないでしょうか。 よろしくお願いします。

  • PHP:2つの置換文字列を一気に変換するには

    PHPで1つの文字列変数内に2つの置換文字列が存在する場合一気に変更可能でしょうか? $data = "a%CHANGE1%c%CHANGE2%"; 置換文字列1:%CHANGE1% ⇒ "b"に変換 置換文字列2:%CHANGE2% ⇒ "d"に変換 ↓すると print($data); 「abcd」 となる感じです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • エクセル 置換後の文字列について

    エクセル2003です 置換後の文字列について質問させてください 特定のセルに文字を入力し 例 C100に(9月)等 検索と置換にて 置換後の文字列を C100のテキストに 置換したいのですが 入力時にC100を選択する方法がわかりません  よろしくお願い致します

  • replaceによる置換がうまくいかない

    Javascriptを使用して、一回で全てのタグの中身を、それぞれで置き換えるような処理を考えています。 例えばですが、 <data> <item list="りんご,みかん,なし">果物</item> <item list="あじ,さんま,まぐろ">魚類</item> <item list="とり,ぶた,うし">肉類</item> </data> を下のように置換することは可能でしょうか? <data> <item list1="りんご" list2="みかん" list3="なし">果物</item> <item list1="あじ" list2="さんま" list3="まぐろ">魚類</item> <item list1="とり" list2="ぶた" list3="うし">肉類</item> </data> if, match, replaceを使って、strに元の文字列が入っているとして、 if (str.match(/<item list=\"([^<]+)\">[^<]+<\/item>/)) { food = RegExp.$1.split(","); str = str.replace(/<item list=\"[^<]+\">[^<]+<\/item>/, "<item list1=" + food[0] + …); } としてみたのですが、当然ながら全てのitemタグの中身がりんご、みかん、なしに置換されてしまいます。 一列ずつ置換する方法はありますか?一列といっても元の文字列は改行がない場合を考えています。 よろしくご教示ください。お願いいたします。

専門家に質問してみよう