我正在尝试下载图片。他们的链接可能是image.png
或http://www.example.com/image.png
。
我将image.png添加到主机并将其传递给列表。所以image.png现在是http://www.example.com/image.png
但如果使用其他类型,我得到的是http://www.example.com//http://www.example.com/image.png
我需要的是在第三个斜杠后获取字符串。以下是我尝试使用的一些代码:
try
{
path = this.txtOutput.Text + @"\" + str4 + etc;
client.DownloadFile(str, path);
}
catch(Exception e)
{
var uri = new Uri(str);
String host = (String) uri.Host;
String pathToFile = "http://" + host + "/";
int len = pathToFile.Length;
String fin = str.Substring(len, str.Length - len);
path = this.txtOutput.Text + @"\" + str4 + etc;
client.DownloadFile(fin, path);
}
答案 0 :(得分:1)
这些变量有哪些,例如str4
,etc
等等?而不是try catch你可以检查字符串是否是有效的uri。看看here。尝试在线调试代码行并检查每个变量,然后你会看到哪一行犯了错误。
修改
如果我对你说得不对,那么这就是你的解决方案:
string wrongResult = "example.com//http://www.example.com/image.png";
string shouldResult = "example.com/image.png";
int listIndexOfHttp = wrongResult.LastIndexOf("http:");
string correctResult = wrongResult.Substring(listIndexOfHttp);
什么时候没有请说明你从哪里得到更具体的结构,它总是相同的结构?还是不同的?