在C#中查找字符串中的字符串

时间:2013-11-16 03:10:19

标签: c#

我有一个字符串,更具体地说它是一段HTML源代码,但由于某种原因,我需要的行全部写为一行(所以基本上它都是使用ReadLine()的一个字符串)。现在在那个字符串中我需要提取一个单词。

这是html代码的提取部分。我需要的是每个.mp3文件的/Qur%27an/Luhaidan/001.mp3部分,最高为114.mp3。

...<th scope="colgroup"><a href="/Qur%27an/Luhaidan/001.mp3"><img src="...
...<th scope="colgroup"><a href="/Qur%27an/Luhaidan/002.mp3"><img src="...
...<th scope="colgroup"><a href="/Qur%27an/Luhaidan/114.mp3"><img src="...

3 个答案:

答案 0 :(得分:2)

虽然一般来说,阅读HTML的最佳方法是使用HTML解析器,但可以使用正则表达式处理像这样的简单任务。

这样的表达应该有效:

href="(.*?[.]mp3)"

在循环中搜索此正则表达式,并提取文件名的第一个组。

var str = @"
...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/001.mp3""><img src=""...
...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/002.mp3""><img src=""...
...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/114.mp3""><img src=""...
";
foreach (Match m in Regex.Matches(str, "href=\"(.*?[.]mp3)\"")) {
    Console.WriteLine(m.Groups[1]);
}

打印

/Qur%27an/Luhaidan/001.mp3
/Qur%27an/Luhaidan/002.mp3
/Qur%27an/Luhaidan/114.mp3

Demo on ideone.

答案 1 :(得分:1)

您可以使用此方法从一个长度中获取值:

String input = @"...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/001.mp3""><img src=""...
            ...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/002.mp3""><img src=""...
            ...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/114.mp3""><img src=""...";

foreach (Match match in Regex.Matches(input, @"href\=\""(.*?\.mp3)"))
{
    String yourvalue = match.Value;
}

代替yourvalue,您需要使用提取的值放置代码。

答案 2 :(得分:1)

考虑以下代码片段来提取mp3文件名...

var matches = Regex.Matches(inputMessage, @"(?<=\"")[\w\s\d/%]*?\.mp3");

祝你好运!