В XCode6 при создании нового проекта файл «pch» по умолчанию не создается, мне пришлось создать файл pch вручную, следуя PCH-файлу в Xcode 6
Я получил его после работы импорт заголовков в файл pch:
#import
#import
Я бы порекомендовал регулярное выражение. Почему?
Выражения регулярных выражений не будут трудно читать, если вы можете ЗАПИСАТЬ регулярные выражения.
используя это как регулярное выражение:
href = "([^"] * \. txt) "
Пояснение:
переводится в экранированную строку следующим образом:
string txtExp = "href=\"([^\\\"]*\\.txt)\"
Затем вы можете перебирать свои совпадения:
Matches txtMatches = Regex.Matches(input, exp, RegexOptions.IgnoreCase);
foreach(Match m in txtMatches) {
string filename = m.Groups[1]; // this is your captured group
}
Ни то, ни другое. Загрузите его в (X / HT) MLDocument и используйте XPath, который является стандартным и очень мощным методом управления XML. Обратите внимание на функции SelectNodes и SelectSingleNode .
Поскольку вы явно используете HTML (не XHTML), вам следует использовать HTML Agility Pack . Большинство методов и свойств соответствуют связанным классам XML.
Пример реализации с использованием XPath:
HtmlDocument doc = new HtmlDocument();
doc.Load(new StringReader(@"<html>
<head><title>Blah</title>
</head>
<body>
<br/>
<div>Here is your first text file: <a href=""http://myServer.com/blah.txt""></div>
<span>Here is your second text file: <a href=""http://myServer.com/blarg2.txt""></span>
<div>Here is your third text file: <a href=""http://myServer.com/bat.txt""></div>
<div>Here is your fourth text file: <a href=""http://myServer.com/somefile.txt""></div>
<div>Thanks for visiting!</div>
</body>
</html>"));
HtmlNode root = doc.DocumentNode;
// 3 = ".txt".Length - 1. See http://stackoverflow.com/questions/402211/how-to-use-xpath-function-in-a-xpathexpression-instance-programatically
HtmlNodeCollection links = root.SelectNodes("//a[@href['.txt' = substring(., string-length(.)- 3)]]");
IList<string> fileStrings;
if(links != null)
{
fileStrings = new List<string>(links.Count);
foreach(HtmlNode link in links)
fileStrings.Add(link.GetAttributeValue("href", null));
}
else
fileStrings = new List<string>(0);
В качестве альтернативы предложению Мэтью Флашена, DOM (например, если вы страдаете от вспышки аллергии на X? L)
Иногда он получает плохую репутацию - я думаю, потому что реализации иногда забавны, а собственные интерфейсы COM немного громоздки без некоторых (незначительные ) умных помощников, но я нашел это надежным, стабильным и интуитивно понятным / доступным для исследования способом синтаксического анализа и управления HTML.