¥などの特殊文字を重ねる処理について

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 ¥などの特殊文字を重ねる処理について

  • このトピックには4件の返信、2人の参加者があり、最後にkoniにより4週前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #7744
    koni
    参加者

    いつもお世話になっております。

    MZでWindowsエクスプローラーを表示する処理があり、MZ上でフォルダパスを設定しております。
    しかし、フォルダパスをMySQLに保存すると、¥(円マーク)が特殊文字のために消えてしまいます。(「C:\Users\koni」と設定すると「C:Userskoni」で保存される。)

    円マークを2個重ねれば、これを回避できるとのことですので、MySQL保存前に「自動的に円マークの数に応じて円マークを2個重ねる処理」を入れたいのですが、その方法をご教授いただきたいです。

    よろしくお願いいたします。

    #7745
    MZPlatformユーザー会
    キーマスター

    ご連絡ありがとうございます。
    確かにMySQLでは「\」が特殊文字のため、データ追加時にエスケープ用にもう一つ「\」を重ねないと消えてしまいます。

    これを回避するには、
    ➀[文字列格納変数]を追加し、パスを一旦[文字列格納変数]に設定します。
    ➁メソッド「指定文字列と一致するすべての文字列を置換する(String,String)」
    引数0:¥(実際は半角)、引数1:¥¥(実際は半角)で文字列内の全ての単独円マークを2つの円マークに置換することができます。
    ➂[文字列格納変数]から文字列を取得して、MySQLへのinsert用のデータとします。

    メソッド「指定文字列と一致する最初の文字列を置換する(String,String)」では文字列の中に出現する1つ目の文字列しか置き換えられませんが、「すべての・・・」を方を使うと、出現する全部の文字列が置換されます。

    上記お試しいただき、ご不明な点やご要望がございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    #7746
    koni
    参加者

    ご回答ありがとうございます。
    この方法でMySQLに正しくパスを保存することができました。

    余談ですが、今回ご回答をいただくまで、文字列の置換に使用する「指定文字列と一致する…」と「正規表現に適合する…」を混同しておりました。
    「正規表現に適合する…」を使用すると、特殊文字を認識する文字列となるとのことで理解いたしました。

    1点確認したいのですが、この2つの使い分けはどのようにすればよいのでしょうか。
    今までの開発では問題ありませんでしたが、知識として知っておきたいため、ご教授お願いいたします。
    よろしくお願いいたします。

    #7747
    MZPlatformユーザー会
    キーマスター

    ご連絡ありがとうございます。
    ご指摘の通り正規表現では半角円マークはエスケープ文字として使用されてしまうため、単独の円マークを引数に設定すると上手く置換できないかと思います。正規表現として2つ円マークを重ねることになります。

    正規表現はピンポイントに文字を置換するのではなく、条件に適合する文字列を探し置換するのに適しています。あいまい検索なども正規表現を使ってできます。
    例えば、「ABCD1234567EFG」という郵便番号が含まれた文字列を「ABCD〒123-4567EFG」と変更するとします。メソッド「正規表現に適合する最初の文字列を置換する(String,String)」の引数0に「(\d{3})(\d{4})」(=数字3桁と4桁が連続する文字列)、引数1に「〒$1-$2」を指定すると「ABCD〒123-4567EFG」と置換されます。「指定文字列と一致する・・・」では引数0に「1234567」と指定しそれ以外は置換できませんが、上記正規表現では7桁の数字であれば置換されるのが違う点です。

    以上ご不明な点がございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    #7748
    koni
    参加者

    ご回答ありがとうございます。
    今までの置換は「指定文字列と一致する・・・」の意味でしか、使用しておりませんでしたので、正規表現をシステムに取り入れていき、今後の開発に活かせればと思います。
    今後ともよろしくお願いいたします。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。