如何使用 IndexOf 和 Substring 从字符串中解析文件名?
How can I parse a file name from string using IndexOf and Substring?
private void ParseFilesNames()
{
using (WebClient client = new WebClient())
{
try
{
for (int i = 0; i < 15; i++)
{
string urltoparse = "mysite.com/gallery/albums/from_old_gallery/" + i;
string s = client.DownloadString(urltoparse);
int index = -1;
while (true)
{
string firstTag = "HREF=";
string secondtag = ">";
index = s.IndexOf(firstTag, 0);
int endIndex = s.IndexOf(secondtag, index);
if (index < 0)
{
break;
}
else
{
string filename = s.Substring(index + firstTag.Length, endIndex - index - firstTag.Length);
}
}
}
}
catch (Exception err)
{
}
}
}
问题出在子字符串上。索引 + firstTag.Length, endIndex - 索引 - firstTag.Length
这是错误的。
我需要得到的是HREF="
和">
之间的字符串
整个字符串如下所示:HREF="myimage.jpg">
我只需要 "myimage.jpg"
有时它可以是 "myimage465454.jpg" 所以在任何情况下我只需要获取文件名。只有 "myimage465454.jpg".
我应该在子字符串中更改什么?
试试这个:
String filename = input.split("=")[1].replace("\"","").replace(">","");
如果您确定您的字符串将始终为 ,只需应用以下内容:
string yourInitialString = @"HREF="myimage.jpg"";
string parsedString = yourInitialString.Replace(@"<HREF="").Replace(@"">");
如果您需要解析 HTML 链接 href 值,最好的选择是使用 HtmlAgilityPack 库。
使用 Html 敏捷包的解决方案:
HtmlWeb htmlWeb = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = htmlWeb.Load(Url);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
// Get the value of the HREF attribute
string hrefValue = link.GetAttributeValue( "href", string.Empty );
}
要安装 HtmlAgilityPack,运行 在程序包管理器控制台中执行以下命令:
PM> Install-Package HtmlAgilityPack
希望对您有所帮助。
private void ParseFilesNames()
{
using (WebClient client = new WebClient())
{
try
{
for (int i = 0; i < 15; i++)
{
string urltoparse = "mysite.com/gallery/albums/from_old_gallery/" + i;
string s = client.DownloadString(urltoparse);
int index = -1;
while (true)
{
string firstTag = "HREF=";
string secondtag = ">";
index = s.IndexOf(firstTag, 0);
int endIndex = s.IndexOf(secondtag, index);
if (index < 0)
{
break;
}
else
{
string filename = s.Substring(index + firstTag.Length, endIndex - index - firstTag.Length);
}
}
}
}
catch (Exception err)
{
}
}
}
问题出在子字符串上。索引 + firstTag.Length, endIndex - 索引 - firstTag.Length 这是错误的。
我需要得到的是HREF="
和">
整个字符串如下所示:HREF="myimage.jpg">
我只需要 "myimage.jpg"
有时它可以是 "myimage465454.jpg" 所以在任何情况下我只需要获取文件名。只有 "myimage465454.jpg".
我应该在子字符串中更改什么?
试试这个:
String filename = input.split("=")[1].replace("\"","").replace(">","");
如果您确定您的字符串将始终为
string yourInitialString = @"HREF="myimage.jpg"";
string parsedString = yourInitialString.Replace(@"<HREF="").Replace(@"">");
如果您需要解析 HTML 链接 href 值,最好的选择是使用 HtmlAgilityPack 库。
使用 Html 敏捷包的解决方案:
HtmlWeb htmlWeb = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = htmlWeb.Load(Url);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
// Get the value of the HREF attribute
string hrefValue = link.GetAttributeValue( "href", string.Empty );
}
要安装 HtmlAgilityPack,运行 在程序包管理器控制台中执行以下命令:
PM> Install-Package HtmlAgilityPack
希望对您有所帮助。