我已经拥有了这样的URL的Listbox,我将它们转换为String
http://example.com/1392/Music/1392/Shahrivar/21/Avicii%20-%20True/01.%20Avicii%20Ft.%20Aloe%20Blacc%20-%20Wake%20Me%20Up%20(CDQ)%20%5b320%5d.mp3 我想在这个链接中提取例如歌曲名称:" Avicii Ft Aloe Blacc -Wake Me Up"我使用c#我已经从网页中提取链接,现在我只需要从链接中提取名称。非常感谢任何建议或帮助。
答案 0 :(得分:1)
试试这个:
using System;
using System.Linq;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
static void Main (string[] args)
{
var url = "http://example.com/1392/Music/1392/Shahrivar/21/Avicii%20-%20True/01.%20Avicii%20Ft.%20Aloe%20Blacc%20-%20Wake%20Me%20Up%20(CDQ)%20%5b320%5d.mp3";
var uri = new Uri (url);
string[] segments = uri.Segments.Select (x => WebUtility.UrlDecode (x).TrimEnd ('/')).ToArray ();
}
}
}
答案 1 :(得分:0)
首先,使用HttpUtility.DecodeUrl
。此函数将解码HTML特殊字符,留下一个纯字符串。然后,您可以简单地按/
分割。
答案 2 :(得分:0)
如果你知道你正在抓取的URL的结构,你应该能够打破字符串中无用的部分。
例如,如果您知道该网址符合以下格式: http://example.com/1392/Music/1392/Shahrivar/21/ {艺术家} - {专辑} / {专题信息}
粗略地说,我认为以下内容可以让您从单个链接中提取所需信息:
void Main (string[] args)
{
var example = @"http://example.com/1392/Music/1392/Shahrivar/21/Avicii%20-%20True/01.%20Avicii%20Ft.%20Aloe%20Blacc%20-%20Wake%20Me%20Up%20(CDQ)%20%5b320%5d.mp3";
var parts = example.split('/');
var album = parts[7];
var trackInfo = parts[8];
var trackParts = trackInfo.split('-');
var artist = trackParts[0];
var trackTitle = trackParts[1];
Console.WriteLine(trackTitle);
}
在这里,我将URL拆分为' /',这是一个混乱的解决方案,但对于一个简单的情况,它可以工作。然后我在标记化字符串中找到可以找到所需信息的索引。一旦我掌握了曲目信息,我就知道会议的目的是将艺术家与标题分开,然后重新分割,然后同时拥有艺术家和标题。
您可以将此重构为一个获取URL的方法,并返回包含Artist和歌曲标题的对象。之后,您可能希望在'%20'上使用string.Replace。用' '