Q8:文字置換をする場合に、一部の文字が消えてしまいます。
Q8-1:
関連ファイルを選択してサーバーの指定場所に、対象ファイルを保管するというサンプルプログラムを作成しているのですが、文字置換をする場合に、一部の文字が消えてしまいます。何か問題があるのでしょうか。
(検証結果)
・テキストフィールドに書き込んだファイル名と所在は、正常に表示されています。
c:\TEST.XLS
・テキストフィールドにあるファイル名を、文字変数に代入した場合も問題なく代入されています。
テキスト(C:\TEST.XLS)-->文字変数(C:\TEST.XLS)
・テキストフィールドにあるファイル名を、文字代入した場合には、文字が欠落する。
テキスト(C:\TEST.XLS)-->文字変数(COPY C:TEST.XLS コピー先)
※ ¥マークが欠落する。
プログラムの中で、不具合箇所はコメントしましたので、すみませんが検証をお願いしていいでしょうか。
関連ファイル:添付ファイル保管デモ_サーバー対応.mzax
A8-1:
ご質問の件ですが、これは、"\"がエスケープシーケンス文字と呼ばれる特殊な文字であることが原因です。Javaの仕様として、コマンドあるいはコマンドの一部として用いられる文字がいくつかあり、"\"はその1つです。文字列格納変数の「正規表現に適合するすべての文字列を置換する(String,String)」メソッドでは、"\"をエスケープシーケンス文字として扱いますので、この場合には結果として"\"が消えてしまいます。
これを回避するには、「指定文字列と一致するすべての文字列を置換する(String,String)」メソッドを使います。こちらのメソッドは、すべての文字をコマンド等ではなく単なる文字として扱いますので、上述のような現象は発生しません。