2016-04-10 36 views
-2

xmlファイルのパスを取得しようとしています。結果格納する文字列から文字を正しく削除するにはどうすればよいですか?

string exe_location = System.Reflection.Assembly.GetExecutingAssembly().Location; 

と別の文字列::私は.exeファイルと1つの文字列を持っている私は、コードを実行している場合は

string xml_location = exe_location.Remove(exe_location.Length, -11); 

を、デバッガが突然言う: "Countが小さくすることはできませんゼロより。\ r \ nパラメータ名:カウント "

私はこの簡単なミッションでどのように失敗することができたのか分かりません。何か案は?

答えて

0

としては、「削除」機能weirdevから言った(長さが11を超えると、長さ-11あなたに負の数を取得する)問題です。あなたはこのコードを使用することができますexeファイルのアセンブリの場所からEXEファイルのパスをしたい場合でも、:; =文字列xml_location `に`

path = IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 
+0

'System.Reflection.Assembly.GetExecutingAssembly()。Location;'私の問題はXMLへのパスを取得することです。 – jjm

+0

@jjmはい、関数 "GetDirectoryName"はあなたにexeの名前を付けずにディレクトリのみを与えます。 "C:\ your_folder \ yourexe.exe"から "C:\ you_folder"まで。 – Baro

+0

ああ、私はそれに気がつきませんでした。あなたはそれを解決しました。ありがとうございました! – jjm

0

Remove()の2番目のパラメータは、削除する文字数です。最初のパラメータは、削除を開始するインデックスです。必要な最後の11文字を削除したい場合。

Remove(exe_location.Length - 11, 11) 
+0

私は(-11、exe_location.Length) '文字列xml_location = exe_location.Removeを変更しましたexe_location.Remove(exe_location.Length - 11、11); '何も変更されませんでした。 (エラーは出ませんでしたが、数字は変更されませんでした。 – jjm

関連する問題