如何从 url 中提取特定名称?
How extract Specific names from url?
我已经有了包含这样的 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
例如,我想在此 link 歌曲名称中提取:"Avicii Ft Aloe Blacc -Wake Me Up " 我正在使用 c# 我已经从网页中提取了 links,现在我只需要从 link秒。已经感谢您的任何建议或帮助。
首先,使用HttpUtility.DecodeUrl
。此函数将解码 HTML 个特殊字符,留下一个普通字符串供使用。然后,您可以简单地按 /
.
拆分
如果您知道要抓取的 URL 的结构,您应该能够 break-off 字符串的无用部分。
例如,如果您知道 URL 遵循以下形式:
http://example.com/1392/Music/1392/Shahrivar/21/{艺术家}-{专辑}/{曲目信息}
粗略地说,我认为以下内容可以让您从单个 link 中提取所需的信息:
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 和 returns 包含艺术家和歌曲名称的 object 的方法。之后,您可能希望在“%20”上使用 string.Replace 和“ ”。
试试这个:
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 ();
}
}
}
我已经有了包含这样的 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 例如,我想在此 link 歌曲名称中提取:"Avicii Ft Aloe Blacc -Wake Me Up " 我正在使用 c# 我已经从网页中提取了 links,现在我只需要从 link秒。已经感谢您的任何建议或帮助。
首先,使用HttpUtility.DecodeUrl
。此函数将解码 HTML 个特殊字符,留下一个普通字符串供使用。然后,您可以简单地按 /
.
如果您知道要抓取的 URL 的结构,您应该能够 break-off 字符串的无用部分。
例如,如果您知道 URL 遵循以下形式: http://example.com/1392/Music/1392/Shahrivar/21/{艺术家}-{专辑}/{曲目信息}
粗略地说,我认为以下内容可以让您从单个 link 中提取所需的信息:
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 和 returns 包含艺术家和歌曲名称的 object 的方法。之后,您可能希望在“%20”上使用 string.Replace 和“ ”。
试试这个:
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 ();
}
}
}