19

私はこの方法を持っています:

private List<string> offline(string targetDirectory)
{
    if (targetDirectory.Contains("http://"))
    {
        MessageBox.Show("true");
    }
    DirectoryInfo di = new DirectoryInfo(targetDirectory);
    List<string> directories = new List<string>();

    try
    {
        string[] dirs = Directory.GetDirectories(targetDirectory,"*.*",SearchOption.TopDirectoryOnly);
        for (int i = 0; i < dirs.Length; i++)
        {
            string t = "http://" + dirs[i];
            directories.Add(t);
        }
    }
    catch
    {
        MessageBox.Show("hgjghj");
    }


    return directories;

}

これは一部です:

if (targetDirectory.Contains("http://"))
{
     MessageBox.Show("true");
}

このディレクトリ内のすべてのディレクトリを提供するディレクトリを取得し、各ディレクトリに文字列を追加しています"http://"

問題は、次にディレクトリがその機能に到達するときに、その機能が付属していることです。"http://"

例:http://c:\\またはhttp://c:\\windows

そして、ライン

 DirectoryInfo di = new DirectoryInfo(targetDirectory); // throws exception.

したがって、ディレクトリが関数に到達するたび"http://"に、最初から始まるかどうかを確認し、"http://"パーツを削除してすべてのディレクトリを取得し、今のように各ディレクトリに追加する必要があり"http://"ます。

どうすれば削除でき"http://"ますか?

4

5 に答える 5

39

私は使用するよりも厳密になりますContains-私は使用しますStartsWith、そしてSubstring:

if (targetDirectory.StartsWith("http://"))
{
    targetDirectory = targetDirectory.Substring("http://".Length);
}

または、ヘルパー メソッドでラップします。

public static string StripPrefix(string text, string prefix)
{
    return text.StartsWith(prefix) ? text.Substring(prefix.Length) : text;
}

http://正直に言うと、とにかく接頭辞としてtheを付けている理由は私には明らかではありません. http://で始まるディレクトリ名が有効な URL であると期待する方法がわかりません。その理由を説明していただければ、より良いアプローチを提案できるかもしれません。

(また、実際のコードにはそのような try/catch ブロックがなく、通常は .NET 命名規則に従っていることを心から願っています。)

于 2012-10-25T05:58:19.947 に答える
10

問題は、どうすればhttp://を削除できるかということです。

string.Replaceを使用して、文字列を空の文字列に置き換えることができます。

targetDirectory = targetDirectory.Replace("http://","");

また

targetDirectory = targetDirectory.Replace("http://",string.Empty);

どちらも同じです

于 2012-10-25T05:56:11.743 に答える
2

これを試して:

if(example.StartsWith("http://"))
{
    example.substring(7); 
}
于 2012-10-25T06:49:19.050 に答える
1

いつでもString.Replaceを使用して、文字列内の文字を削除/置換できます。例:

targetDirectory = targetDirectory.Replace("http://", string.Empty);

そして、文字列がHttp://で始まるかどうかを確認するには、次のようにします。

if(targetDirectory.StartsWith("http://"))
于 2012-10-25T05:59:43.340 に答える
1

文字列で置換文字を使用するには、次のようにします。string.Replace

if (targetDirectory.Contains("http://"))
{
    targetDirectory = targetDirectory.Replace("http://",string.Empty);
}
于 2012-10-25T06:09:47.810 に答える