2013-11-16 3 views
1

У меня есть строка, более конкретно это фрагмент исходного кода HTML, но по какой-то причине строки, которые мне нужны, записываются как одна строка (так что в основном это одна строка, использующая ReadLine()). Теперь в этой строке мне нужно извлечь определенное слово.Поиск строки в строке в C#

Вот извлеченная часть html-кода. Мне нужна часть /Qur%27an/Luhaidan/001.mp3 для каждого .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="... 

ответ

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.

+0

когда я пытаюсь использовать этот richTextBox3.Text = m.Groups [1]; Я получаю сообщение об ошибке: Невозможно неявно преобразовать тип System.Text.RegularExpressions.Group 'в' string ' – FJam

+1

@FJam Вы можете добавить '.Value' (т. Е. Сделать' m.Group [1] .Value') для преобразования группы к строке. – dasblinkenlight

+0

спасибо большое Я получил его – FJam

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 вам нужно поместить код что делает что-то с извлеченным значением.

1

Рассмотрим следующий фрагмент кода, чтобы извлечь имена файлов mp3 ...

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

удачи!

Смежные вопросы