• ベストアンサー

Javascriptでの正しい文字置換方法

Javascriptのサンプルなどで置換処理は A→Bの置換を行う場合 文字列をAで配列に分割してそれをB区切りに連結するという方法を使っているのを見かけるのですが納得いきません。 Perlで書いた場合、こんな感じの処理ですね。 $str = join("B",split(/A/, $str)); もう少し正直に $str =~ s/A/B/g; に該当するような正しい記述は無いものでしょうか?

noname#19884
noname#19884

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

  • ベストアンサー
  • galoon
  • ベストアンサー率28% (38/133)
回答No.3

#2です。 参考URLの下部にある記載を見と正規表現も使えるようです。 対応状況などはシビアかもしれませんが・・・。

参考URL:
http://www.parkcity.ne.jp/~chaichan/src/javasc30.htm

その他の回答 (2)

  • galoon
  • ベストアンサー率28% (38/133)
回答No.2

単純な文字列内の文字置換であれば a = "****A*******A**"; b = a.replace("A","B"); とかでいいのでは?

参考URL:
http://www.scollabo.com/banban/jsindex/sample/sample_225.html
noname#19884
質問者

補足

大文字小文字同一視とか、最小マッチとか 正規表現とかできますか?

  • to_kyo
  • ベストアンサー率41% (7/17)
回答No.1

str.replace(/A/, B); replaceという関数がありますね

noname#19884
質問者

お礼

やっぱりちゃんと関数があるのですね。 http://www.jupiter.sannet.ne.jp/aikikou/tikan.html これにだまされました。

noname#19884
質問者

補足

しまった、一度お礼記入すると修正できないのね!! ご回答ありがとうございました。

関連するQ&A

  • Javascriptで特殊文字を置換する方法

    表題の件で分からず教えてください。 PerlでHTMLとJavascript(HTML埋め込み)を作成しています。 Javascript(On Click)で、文字列を置換させたいのですが、うまくできません。 (最終的にやりたいことはTextAreaに埋め込んだタグ付き文章を「プレビューする」ようなイメージです) ■置換前の文字列 $body$ ■置換後の文字列 任意の文字列(タグを含む) ネットで調べたところ次の方法でできるようだったので試しましたが、できませんでした。 var rgexp = new RegExp("\$body\$", "g"); str = frm.preview.value.replace(rgexp, "■■■"); 「$」とエスケープ文字をはずすとうまくいくので、多分「$」で失敗しているのだと思いますが 解決が分かりません。 ※エスケープをはずすとPerlの出力時に怒られてしまいます お分かりになる方いらっしゃいましたらお願いします。

  • join と split で文字列を操作する場合

    にんにちは、 うまく解決する方法を思いつかないので、質問させてください。 以下のスクリプトを実行すると、a から z を * で join して、 その後、* で split するかなと思ったら、split は正規表現として とらえるためでしょうか、エラーになります。 #! /usr/bin/perl -w use strict; my $a = '*'; my $b = join $a , ('a'..'z'); print "$b\n"; my @result = split /$a/,$b; print "$_\n" foreach @result; exit(); $a = '\*'; にすると、split したときに、 余計な \ が残ってしまいます。 任意の(書く時点では分からない)いろんな文字列で 連結したり分割したりする場合のスマートな方法が ありましたら、教えていただけませんか? Perl 5.8 です。お願いします。

    • ベストアンサー
    • Perl
  • javascriptでの文字列操作

    こんにちは。 javascriptでの文字列操作で躓いてしまったのでご教授ください。 例えば、 var str = "00000"; という文字列があったとして、これの2文字目を”1”に変更したいといった場合、javascriptではどのように操作するのが簡単でしょうか。 phpですと、 $str = "00000"; $str[1] = "1"; といった記述で操作できた記憶があるのですが、調べてみても同様の操作が見当たらず・・・。 文字列を分割して+で足すような感じの処理か、配列にして繰り返し処理といった感じになってしまうのでしょうか。 宜しくお願い申し上げます。

  • ◆文字列内の複数置換

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

    • 締切済み
    • PHP
  • javascriptの文字列置換

    例えば aaという入力文字列に対し、結果として <span id=1>a</span><span id=2>a</span> というように、ここの「a」に関してidによる区別を行いつつ、置換を行いたいです。 現在、下記のコードのように書いていて、 indexSet=[a, 0, b, 1, c, 2] という配列になっています。 var num = 0; for (var i = 0; i < indexSet.length; i+=2) { var subjectKeyword = new RegExp( indexSet[i], "g" ); if( Body.match(subjectKeyword) ){ Body = Body.split( indexSet[i] ).join( '<span id=' + indexSet[i+1] + '-' + num + '>' + indexSet[i] + '</span>' ); num++; } else { Body = Body; } } 欲しい結果は <span id=1-1>a</span><span id=1-2>a</span> なのですが、上記のコードでは <span id=1-1>a</span><span id=1-1>a</span> と、全てのaに対して同時処理を行っているように見えます。 どのように改善すればよいのかわかりません。どうか力を貸していただけませんか?

  • 正規表現の空白文字の解釈?

    正規表現について、「空白文字を区切りとして配列に分割する」というプログラムを書いていたのですが、私の浅い経験では、空白文字は "\s+"で処理できていたと思っていましたが、今PHP4で以下の結果、" +"でないと、正しく動作しませんでした。 $a = " 1 2 3 4 5 "; $b = split(" +", $a); "\s+"の方が正解だと私は思うのですが、どういう解釈で" +"でないといけないのでしょうか?

    • ベストアンサー
    • PHP
  • 配列に格納した文字列の置換

    Perlで、配列@arrayの要素それぞれを文字列$strから見つけてタグで囲みたいと思っています。 $str = 'abc+fghoge(ij'; @array = ('+', '(', '?', '//', 'hoge'); $pattern = '\Q' . join '\E|\Q', @array . '\E'; $str =~ s/($pattern)/<TAG>$1<\/TAG>/g; @arrayの要素には、メタキャラクタが含まれる可能性があるため、\Qと\Eで挟む必要があるかと思うのですが、上のようにしてもうまくいきません。下だとうまく置換されるので、\Qや\Eの使い方は間違っていないと思うのですが、どなたかアドバイスいただけないでしょうか。 $str =~ s/(\Q+\E|\Q(\E|\Q?\E|\Q//\E|\Qhoge\E)/<TAG>$1<\/TAG>/g; よろしくお願いします。

    • ベストアンサー
    • Perl
  • 配列の値を置換するにはどうすればいいでしょう?

    http://www.moug.net/tech/exvba/0100022.htm を参考にして配列を含むVBAコードを作成しているのですが 例えば「○」を「●」に置換したい場合、 どうすればいいのでしょう? myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●")) にしたら「型が一致しません」と言うエラーになります。 どなたかご教授よろしくお願いします。

  • ■str_split()で指定した文字数ではなく、指定した文字までを配列に入れることは可能ですか?

    いつもお世話になっています。 文字列を配列に入れようと思って、str_split()を調べました。 $str = "Hello Friend"; $arr = str_split($str, 3); print_r($arr); の結果は Array ( [0] => Hel [1] => lo [2] => Fri [3] => end ) になりますよね?これを $str = "今日はいい天気です。遠足に行きましょう。楽しかったですね。"; としたときに、「。」までを区切りとして配列に入れることは可能でしょうか? つまり、この後何かしらのことをして、 print_r($arr); をすると、以下のように出力されるようにしたいのです。 今日はいい天気です。 遠足に行きましょう。 楽しかったですね。 str_split()で指定した文字数ではなく、指定した文字までを配列に入れることは可能でしょうか?

    • ベストアンサー
    • PHP
  • 置換文字列の中に"?"があると置換できません。

    恐れ入ります。 ?”クエスチョンマーク”の置換をしたいのですが できなくて困っています。 例 #!/usr/bin/perl $a='a?a'; $b='bbba?abbbbaaaabbbbabbbbb'; $b=~ s/$a//g; print "$b\n"; 文字列$bから”a?a”を削除しようとしているのですが、 変化しません。 ためしに\?としてみましたが・・・だめでした。 ?を!に変えたい!とかいう人は絶対いると思い 「クエスチョンマーク 置換」 等で検索したのですが、 「0個(=1個もない)、または1個ある場合」を表している」 等の情報ばかりでした・・・ どうか教えてください。。。

    • ベストアンサー
    • Perl