• ベストアンサー

ダブルクォーテーション置換時の謎について

ダブルクォーテーションの入った文字列からダブルクォーテーションを削除するため、置換を使ったのですが何かの数字コードに化けてしまいました。 これはどういう理由でこのような現象になったでしょうか。 5という数字のみ出てきて欲しいのですが。 ご回答よろしくお願いいたします。 以下、サンプルプログラムです。 ------------------------------------------------- $aotype= "\"5"; print "$aotype\n"; $aotype= ~s/\"//g; print "$aotype\n";

  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • Ceren
  • ベストアンサー率49% (90/183)
回答No.1

3行目の > $aotype= ~s/\"//g; で、「=」と「~」の間にスペースが入っているのが原因のようですね。 「=~」に直せば期待した動作をすると思います。

japonegold
質問者

お礼

迅速なご回答ありがとうございます。 期待通りに動きました。 置換の=~にスペースを入れると駄目だったんですね。 今まで知らずに使っていました。

関連するQ&A

  • ダブルクォーテーションが置換できません

    いつもお世話になっております。 PHP初心者です。 シングルクォーテーションとダブルクォーテーションを文字列として入力したいと思い、以下のように記述しました。 -------------------------------------------------- $naiyo = $_POST['naiyo']; $search = array('\'','"'); $replace = array('\'\'','\"'); $naiyo2 = str_replace($search,$replace,$naiyo); -------------------------------------------------- シングルクォーテーションは置換された(文字列として表示された)のですが、ダブルクォーテーションは表示されず、ダブルクォーテーション以下の文字列が消えてしまいます。 置換ができていないというよりも、そもそもダブルクォーテーションが検索に引っかかってもいないようです。 どのようにすればダブルクォーテーションも置換できるか、お分かりの方がいらっしゃいましたらご教示ください。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 文字列に含まれているダブルクォーテーション( ")を置換する

    文字列に含まれているダブルクォーテーションを除きたいのですが、これをSubstitute関数で置換しようとしてもうまくいきません。ダブルクォーテーションが文字列を指定するために使われるせいだと思うのですが、"を文字列として指定する方法はあるのでしょうか? よろしくお願いします。

  • EXCELでの置換でコーテーションを残す方法

    どなたか教えて下さい。 EXCELの置換(「編集」-「置換」)で文字列の置換は出来るのですが、 ” :ダブルコーテーション から ’ :シングルコーテーション に置換したいのですが、その場合、セルの先頭のシングルコーテーションが文字列の始まりと捕らえられ消えてしまいます。 これをそのまま残す方法はありますか?

  • ダブルクォーテーションの削除(置換)

    $a = qq/"aaaaaa","bbbbb"/; print $a; → "aaaaa","bbbbb" としたときの、変数 $a の中にある ダブルクォーテーションを削除したいのですが、 $a =~ s/"//; では何も変化が無くて、 $a =~ tr/"/ /; では半角スペースに置換できるのですが、 $a =~ tr/"//; では何も変化がありません。 上手く出来る方法はどの様な方法でしょうか? 教えていただければありがたいです。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ダブルコーテーションの置換

    半角ダブルコーテーションを全角に置換したくて Replace(StrTemp, """", "”") としたんですが、うまくいきません。 第一引数の""""が問題なのかと思ったら、どうも後の"”"が問題みたい・・・ 試しに""”"としてみたら、VBのコードエディタに""""に直されてしまいました。 なぜなんでしょう?

  • ダブルコーテーション(

    str_replace関数にてダブルコーテーション(")を空白文字列に置換したいのですが、 どのような手法を取ればよろしいのでしょうか? str_replace(""", "", $file); ではないことは確認しているのですが。。 ご教授お願いします。

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

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

  • 正規表現の置換で、カンマで区切られた語句を""と改行で分ける方法

    正規表現による置換についてお教えください。 Unixのコマンドで置換するときに、sed コマンドを使うと思います。 今、プログラムのソースコードの中に含まれている語句を取得するために、色々いじろうと思っています。 私が最もお聞きしたいのは、正規表現の書き方であることを、まずご理解ください。 ソースコードの中に、 string headline="語句1,語句2,・・・,語句n-1,語句n"; というように、 string headline= で始まっていて、 その後に " "(ダブルクォーテーションの組)で囲まれた部分が1箇所あり、 その部分に、カンマ(,)で区切られた語句がいくつもあるような行があったとき、 その " "の部分を、 "語句1", "語句2", ・・・ "語句n-1", "語句n" のように置換したいのです。 つまり、語句一つ一つをダブルクォーテーションで包んで、1行に語句が1つになるようにしたいのです。 厳密に言えば、stringとheadlineの間などに、タブや空白がいくつあるかわからないという問題なども考える必要があるかもしれません。 とりあえず私が考えたのは、 s/\(string headline="\)\([^,]\)+,\(";\)/\1\2",改行"\3/g です。 s/置換前の文字列のパターン/置換後の文字列のパターン/g となっています。 置換前のパターンで \( \) で囲まれている部分は、置換後のほうで、\1のように参照できます。 ■■でも、私の書いたものって、語句が繰り返し出現することに対応できていないように思われます。■■ 実際に、置換に改行を含めるには、正規表現をファイルの中に書いて、sedの-fオプションで読み込ませることになると思います。 string headline=" " という形をしていないものは、たとえ、" " の中がカンマで区切られていてもそれを分けません。

  • Excelに、ダブルクォーテーションで始まる文字列を貼り付けると、ダブルクォーテーションが消えること

    Excelで、ダブルクォーテーションで始まる文字列をセルに貼り付けたときに ダブルクォーテーションが消えるのですが、 Excelってもともと(標凖的な動作として)そういうものですか。 (F2キーを押すなりして)編集状態にして貼り付ければ、ダブルクォーテーションのついたまま貼り付くのですが、 私はセルを選択して貼り付けただけでも大丈夫だと思っていました。 「文字列を貼り付ける」というのは、例えばテキストエディタ上にあるものを手作業でコピーして貼り付ける、ということです。 「ダブルクォーテーションで始まる文字列」と言っても、 ダブルクォーテーションが3つ以上あったときに消えるのは、最初の1組(2つ)ですね。 しかし、 "AAAA"""BBBB のような場合には、なぜか AAAA"BBBB になるのです。 (ちなみに、この文字列を、質問直前の質問内容確認の画面(IE)でコピーしてExcelに貼り付けたときは、違います。) どのような規則に基づいてダブルクォーテーションが消えるのかも疑問です。 このような仕様になっている理由はなんでしょうか。 また、Excelに文字列を貼り付けるという操作を頻繁に行うため、 できれば、編集状態にしなくても、 セルを選択して貼り付けするだけで、そのままダブルクォーテーションも貼り付いてほしいのですが、 そのためにはどうすればよいのでしょうか。 「セルの書式設定」で、表示形式を文字列にすればよいと思ったのですが、だめでした。 セルには文字列を入れるだけで、数式を入れたりしません。 (数式としては扱ってほしくない、という意味です。) Excelは2000です。

  • ダブルコーテーションを全角に置換するには

    InputBoxで入力した"を、Replace関数で”にしたいのですが、 Replace(str, """", "”")をすると、コンパイルエラーになります。 Sub macro() Dim str As String str = InputBox("文字を入れてください") Debug.Print Replace(str, """", "") End Sub というマクロを作りました。 画像のように、半角のダブルコーテーション「"」を入れたら、 Replace関数で全角のダブルコーテーション「”」に変えるにはどうすればいいでしょうか? 「最初からInputBoxに全角入れればいいやん!」 は、なしにしてください。 ファイル名を作っていて、ダブルコーテーションは全角でないとつけられないのです。

専門家に質問してみよう