3

以下のURLの最初のフォルダーを抽出したいと思います。この例では、「extractThisFolderName」という名前ですが、フォルダーの名前と長さは任意です。これを念頭に置いて、サブストリングを使用して最初のフォルダー名を抽出するにはどうすればよいですか?

文字列:www.somewebsite.com/extractThisFolderName/leave/this/behind

String folderName = path.Substring(path.IndexOf(@"/"),XXXXXXXXXXX);

それは私が苦労している長さです。

4

7 に答える 7

18

Uriを取得している場合は、uri.Segments [0]を実行してみませんか?

それともpath.Split(new Char[] { '/' })[1]

于 2009-01-13T15:06:34.983 に答える
1

この問題は、正規表現にも役立ちます。次のような表現:

(?<host>.*?)/(?<folder>.*?)/

何が起こっているのかが明確であり、それらの名前でデータを取得できます。

于 2009-01-13T15:49:52.697 に答える
1

各パス部分を使用する場合は、次を使用できます。

String[] parts = path.Split('/');

この時点で、parts[1] にアクセスすることで「extractThisFolderName」部分にアクセスできます。

または、これを実行してフォルダー名をつなぎ合わせることができます。

int firstSlashIndex = path.IndexOf('/');
int secondSlashIndex = path.IndexOf('/', firstSlashIndex + 1);
String folderName = path.Substring(firstSlashIndex + 1, secondSlashIndex - firstSlashIndex);
于 2009-01-13T15:08:47.117 に答える
1

ダニエルの答えは、それを行う他の実用的な方法を提供します。部分文字列を使用した別の方法:

int start = path.IndexOf('/')+1; // Note that you don't need a verbatim string literal
int secondSlash = path.IndexOf('/', start);
return path.Substring(start, secondSlash-start);

もちろん、そこにいくつかのエラーチェックを追加する必要があります:)

于 2009-01-13T15:09:08.300 に答える
0
int start = path.IndexOf('/');
int end = path.IndexOf('/', start + 1);
if (end == -1) end = path.Length;
string folderName = path.Substring(start + 1, end - start - 1);

編集:URIセグメントの使用に関するDaniel Schafferの回答が望ましいですが、パスが実際には有効なURIではない可能性があるため、これを残しました。

于 2009-01-13T15:08:17.630 に答える
0
folderName.Split('/')[1]
于 2009-01-13T15:09:21.997 に答える
0

あなたがすることができます:

string myStr = "www.somewebsite.com/extractThisFolderName/leave/this/behind";
int startIndex = myStr.IndexOf('/') + 1;
int length = myStr.IndexOf('/', startIndex) - startIndex;
Console.WriteLine(myStr.Substring(startIndex, length));

同じ時点で、これはASP.Netで行われていると思います。そうであれば、クエリを実行せずにこれを取得する別の方法があると思います。

于 2009-01-13T15:08:59.033 に答える