如何从 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 ();
        }
    }
}