0

パスのファイル名を削除しようとしています。

/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx

次のようになります。

/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/

ファイル名が変更される可能性があることを念頭に置いて、正規表現がこれを達成する最良の方法でしょうか?

4

7 に答える 7

6

以下を使用できます。

Path.GetDirectoryName(path);
于 2012-07-29T18:32:54.370 に答える
3

使用できます

Path.GetDirectoryName()

詳細: http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname.aspx

于 2012-07-29T18:33:05.407 に答える
3

実際、Path.GetDirectoryName は / を \ にします。

var filepath = "/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx";
var directorypath = filepath.Substring(0, filepath.LastIndexOf("/", StringComparison.Ordinal) + 1);
// /vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/
var dir = Path.GetDirectoryName(filepath);
// \vmfs\volumes\50153b66-6aac5486-e942-080027a10080\TestMachine
于 2012-07-29T18:40:39.187 に答える
2

これはかなり重いアプローチですが、防弾技術を使用していることを知っておくと便利な場合があります...

var path = new UriBuilder("file", "/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx");
var parent = new Uri(path.Uri, "..");

 Console.WriteLine(parent.AbsolutePath);

結果:

 /vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/
于 2012-07-30T06:35:52.657 に答える
2

そのためのメソッドが System.IO.Path にあります

Path.GetDirectoryName(fileName)
于 2012-07-29T18:33:05.150 に答える
2

使用するSystem.IO.Path.GetDirectoryName

System.IO.Path.GetDirectoryName("/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx")
于 2012-07-29T18:33:59.213 に答える
1
strPath = "/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx";

string[] strFileParts = strPath.Split( '\\' );
if ( strFileParts.Length > 0 )
{
    str =  strFileParts[strFileParts.Length - 1] );
}

result = full_path - str;
于 2012-07-29T18:40:19.110 に答える