0

VisualStudio 10で小さなWPFプログラムを作成しています。このプログラムは、matlabにグラフをプロットし、このグラフをディレクトリ内のファイルに保存します。

C#では、最初に現在のパスを取得します

パス=System.IO.Directory.GetCurrentDirectory();

その後、MLAppパッケージを使用してMatlabに送信し、matlabを適切なディレクトリに保存します。

matlabExe.Execute( "cd"+パス+";"); どのmatlabExeがMLApp.MLAppthingyです。

ただし、C#には、二重の円記号(\\)を使用してパスを保存するこの優れた方法があるため、matlabはパスを認識しません。だから、私が思ったのは簡単だろう、ただやる

path.Replace(System.IO.Path.DirectorySeparatorChar、System.IO.Path.AltDirectorySeparatorChar); しかし、悲しいことに、それは仕事をしませんでした!パスに時計を追加したとき、この交換を行っても何も変わっていないことがわかりました。

また、ダブルセパレーター「マニュアル」を交換してみました

path.Replace( "\\"、 "/");

しかし、運もありません..どうすればこれを行うことができますか?:(

ご協力いただきありがとうございます!

4

1 に答える 1

0

C#はダブル\をエスケープシーケンスとして使用します

デバッグウィンドウで文字列を見ると、次のようになります。

 "C:\\Program Files\\MatLab\\MatLab.exe"

しかし、プログラムが実際に文字列を使用すると、次のようになります

 "C:\Program Files\MatLab\MatLab.exe"

ですから、あなたはどんな道をたどる必要があります。それを取り替えると、それはそれ自身でそれを処理します。それがあなたがそれに問題を抱えている理由です。必ずこれを試してみたい場合

  string path = "C:\Program Files\MatLab\MatLab.exe";
  int count = path.Count(s => s == '\');

デバッグウィンドウでは6と表示されますが、カウントは3になります。

matlabがパスを認識しない場合は、別の理由があります

作成しようとしている正確なパスと、C#が吐き出している正確なパスを表示したい場合は、私がお手伝いします

詳細については、MSDNのエスケープシーケンスを参照してください。

于 2012-07-06T14:40:47.147 に答える