2011-12-05 29 views
0

私はASP.NET/C#3.5を使用してWeb用のWindowsエクスプローラアプリを構築しています。私は自分のパス情報を保持する動的な文字列を持っています。この文字列は、アプリケーションをナビゲートするときに変更されます。私は何をしようとしていることは例えばので、私の文字列の最後の「ディレクトリ名」を取得することです:文字列操作 - 最後の 'x'文字数を取得

C:\Code\AppSettings 

文字列だった場合、私はAppSettings

を返却する必要があるでしょう:

C:\Code\AppSettings\Backup 

次に返す必要がありますBackup

動的文字列からこれを正しく取得するには、文字列操作で十分な知識がありません。どんな助けや例も素晴らしいでしょう。

ありがとうございます!

+2

これは 'Path'で行う方が簡単です。 – DarthVader

答えて

5

は、ファイル/ディレクトリパスを扱っているので、代わりに文字列操作のPath Classのヘルパーメソッドを使用するのが最善です。

あなたはPath.GetFileName Methodを使用することができます。

var result = Path.GetFileName(@"C:\Code\AppSettings"); 
// result == "AppSettings" 
+0

すべての助けをいただきありがとうございます。 – Jared

0

もののこの種を扱うためPath classを使用することをお勧めします...

しかし、あなたは

string myResult = myString.SubString (myString.LastIndexOf ("\\") + 1); 
0

を試みる文字列処理を経て、それをしたい場合、私は、これはそれを行うべきだと思う:

exampleString = "C:\Code\AppSettings\Backup" 
string[] words = exampleString.Split('\\'); 

'\\'に従って文字列をトークン化します。すなわち、'\'シンボルの文字列をC:の配列に分割しますAppSettingsBackup

次にあなたがする必要があるだろう、すべてはあなたが好きしかしwordsリストの最後の要素を使用しています。

以前はPathを使ったことがありませんでしたが、文字列の最後の部分がディレクトリである可能性があるため、あなたが望むものが得られるかどうかは疑問です。

+0

'StringSplitOptions.RemoveEmptyEntries'を使用すると、ディレクトリセパレータの末尾にあるパス(C:\ Code \ AppSettings \)に起因する問題を回避できます。 –

1

Path classを見てみましょう。あなたの場合、Path.GetFileNameが動作します。末尾にバックスラッシュがある場合を除きます。それから、後にバックスラッシュを取り除く必要があります。

またはSubstringまたはString.Splitを使用することもできます。しかし、バックスラッシュの可能性を考慮する必要があることに注意してください。バックスラッシュは、いずれの代替案にも問題を引き起こす可能性があります。

バックスラッシュを末尾にすると、C:\Code\AppSettings\のような文字列を意味します。 Backup

System.IO.Path

1
Path.GetFileName(@"C:\Code\AppSettings\Backup") 

結果は、ファイルまたはディレクトリのパス操作のために使用すべきである - それは、他の有用な方法の多くを提供しています。

関連する問題