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");
}

我得到一个目录,它给了我这个目录中的所有目录,并且我在每个目录中添加了 string "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://不过,老实说,我不清楚你为什么要加上前缀。我看不出您如何期望以 为前缀的目录名称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 回答