[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[548] replaceallでの¥マークの処理

Keith Masuda [2020/03/31 13:58:45]

毎度重宝して使わせて頂いております。
従来は、エクセルで処理してから、cassava を使っていたのですが、良く考えると cassava で全部処理できそうなので、マクロを作りました。

その中で、\マークを削除したかったので、以下のようにreplaseall でやってみたら、他の削除文字は問題ないのですが、メタ文字の\を認識してくれずエラーになります。 書式はこれで良いのでしょうか。 ちなみにreplace で for で回すとOKでした。

それと、文字列の先頭に文字を加えるのは、replaceall でも可能でしょうか? いろいろやってみましたが、上手くいきませんでした。

ReplaceAll ("\\","", false, false, false, 5, 2, 5, Bottom);

もしくは

ReplaceAll ("\\","", false, false, ture, 5, 2, 5, Bottom);

Re: [548] replaceallでの¥マークの処理

あすかぜ [2020/03/31 19:59:51]

正規表現では「\」は「\\」で表し、マクロの文字列表現でも「\」は「\\」で表す(「\\」は「\\\\」で表す)ので、マクロ中の正規表現では「\」は「\\\\」とする必要があります。

ReplaceAll("\\", "", false, false, false, 5, 2, 5, Bottom);

もしくは

ReplaceAll("\\\\", "", false, false, true, 5, 2, 5, Bottom);

で「\」を削除できると思うのですが、どうでしょうか。
先頭に文字を加えるのは

ReplaceAll("(.*)", "加える文字$1", false, false, true, 5, 2, 5, Bottom);

を試してみてください。
正規表現検索時には $1 で検索文字列中の () で囲んだ部分を参照できます。
「^」記号は今の所正しく動作しないようです。すみません。

よろしくお願いします。

Re: [548] replaceallでの¥マークの処理

Keith Masuda [2020/04/02 09:34:52]

早速の回答を有難うございます。

ReplaceAll("(.*)", "加える文字$1", false, false, true, 5, 2, 5, Bottom);
は上手くいきました。 有難うございます。 やはり ^ はだめでした。



ReplaceAll("\\", "", false, false, false, 5, 2, 5, Bottom);

もしくは

ReplaceAll("\\\\", "", false, false, true, 5, 2, 5, Bottom);

は上手くいきませんでした。 文字列が終わっていないとかのエラーになります。

現在は
/// \マークの削除
for(y=1; y<=Bottom; y++){
 for(x=5; x<=Right; x++){
  [x,y] = replace([x,y],
    "\\","");
 }
}

で上手くいきます。 出来れば全部 replaceall で処理したら綺麗だと思いましたが、現状は実用上は問題ありません。 有難うございました。


Re: [548] replaceallでの¥マークの処理

Keith Masuda [2020/04/02 09:50:23]

追記です。

結果から言うと上手くいきました。

ReplaceAll("\\", "", false, false, false, 5, 2, 5, Bottom);
はOKです。 最初のエラーチェックとかで、ここまで実行されていませんでした。 エラーを出ないようにしたら動きました。


ReplaceAll("\\\\", "", false, false, true, 5, 2, 5, Bottom);

はやはりエラーになります。 正規表現をtrueにする、何か実行時のエラーになるようです。

有難うございました。




Re: [548] replaceallでの¥マークの処理

あすかぜ [2020/04/02 21:42:01]

ご報告ありがとうございます。

ReplaceAll("\\\\", "", false, false, true, 5, 2, 5, Bottom);

は私の環境では動作します。
必要でしたら、問題が発生するマクロを mail@asukaze.net まで送っていただければなぜエラーとなるのか調査できると思います。

「^」が動作しない問題についても改善できるか調査したいと思います。

Re: [548] replaceallでの¥マークの処理

Keith Masuda [2020/04/03 11:42:50]

大変丁寧な対応を有り難うございます。
\\\\の件は、どうも環境依存みたいなので、こちらでもう少しやってみます。 有り難うございました。



スレッド一覧に戻る返信