MZ Platformとは › 掲示板 › MZプラットフォームユーザー会掲示板 › ¥などの特殊文字を重ねる処理について
-
投稿者投稿
-
2025年2月10日 12:00 PM #7744koni参加者
いつもお世話になっております。
MZでWindowsエクスプローラーを表示する処理があり、MZ上でフォルダパスを設定しております。
しかし、フォルダパスをMySQLに保存すると、¥(円マーク)が特殊文字のために消えてしまいます。(「C:\Users\koni」と設定すると「C:Userskoni」で保存される。)円マークを2個重ねれば、これを回避できるとのことですので、MySQL保存前に「自動的に円マークの数に応じて円マークを2個重ねる処理」を入れたいのですが、その方法をご教授いただきたいです。
よろしくお願いいたします。
2025年2月10日 5:35 PM #7745MZPlatformユーザー会キーマスターご連絡ありがとうございます。
確かにMySQLでは「\」が特殊文字のため、データ追加時にエスケープ用にもう一つ「\」を重ねないと消えてしまいます。これを回避するには、
➀[文字列格納変数]を追加し、パスを一旦[文字列格納変数]に設定します。
➁メソッド「指定文字列と一致するすべての文字列を置換する(String,String)」
引数0:¥(実際は半角)、引数1:¥¥(実際は半角)で文字列内の全ての単独円マークを2つの円マークに置換することができます。
➂[文字列格納変数]から文字列を取得して、MySQLへのinsert用のデータとします。メソッド「指定文字列と一致する最初の文字列を置換する(String,String)」では文字列の中に出現する1つ目の文字列しか置き換えられませんが、「すべての・・・」を方を使うと、出現する全部の文字列が置換されます。
上記お試しいただき、ご不明な点やご要望がございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。2025年2月11日 1:29 PM #7746koni参加者ご回答ありがとうございます。
この方法でMySQLに正しくパスを保存することができました。余談ですが、今回ご回答をいただくまで、文字列の置換に使用する「指定文字列と一致する…」と「正規表現に適合する…」を混同しておりました。
「正規表現に適合する…」を使用すると、特殊文字を認識する文字列となるとのことで理解いたしました。1点確認したいのですが、この2つの使い分けはどのようにすればよいのでしょうか。
今までの開発では問題ありませんでしたが、知識として知っておきたいため、ご教授お願いいたします。
よろしくお願いいたします。2025年2月12日 6:29 PM #7747MZPlatformユーザー会キーマスターご連絡ありがとうございます。
ご指摘の通り正規表現では半角円マークはエスケープ文字として使用されてしまうため、単独の円マークを引数に設定すると上手く置換できないかと思います。正規表現として2つ円マークを重ねることになります。正規表現はピンポイントに文字を置換するのではなく、条件に適合する文字列を探し置換するのに適しています。あいまい検索なども正規表現を使ってできます。
例えば、「ABCD1234567EFG」という郵便番号が含まれた文字列を「ABCD〒123-4567EFG」と変更するとします。メソッド「正規表現に適合する最初の文字列を置換する(String,String)」の引数0に「(\d{3})(\d{4})」(=数字3桁と4桁が連続する文字列)、引数1に「〒$1-$2」を指定すると「ABCD〒123-4567EFG」と置換されます。「指定文字列と一致する・・・」では引数0に「1234567」と指定しそれ以外は置換できませんが、上記正規表現では7桁の数字であれば置換されるのが違う点です。以上ご不明な点がございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。2025年2月13日 11:08 AM #7748koni参加者ご回答ありがとうございます。
今までの置換は「指定文字列と一致する・・・」の意味でしか、使用しておりませんでしたので、正規表現をシステムに取り入れていき、今後の開発に活かせればと思います。
今後ともよろしくお願いいたします。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。