Как разобрать строку?
Я пытаюсь разобрать следующую входную строку для приведенной ниже функции my, но постоянно получаю исключение “длина aA не соответствует длине bA".
Я пробовал использовать регулярное выражение для фильтрации, но все еще изо всех сил пытаюсь его разобрать. Любые предложения были бы очень полезны. Спасибо.
String a = Illiquidity option, credit model minted, Pricing service unveiled string b = <P align=justify>RiskSpan has released a proprietary independent daily pricing service for structured products and mortgage assets. Real-time pricing and can process thousands of securities in virtually minutes, it says.</P><P align=justify>Joe Sturtevant, co-founder and pricing executive at RiskSpan, comments: "We are now pricing bonds in the manner in which a trader would and providing context that streamlines the audit process."</P>, <P align=justify>RiskSpan has released a proprietary independent daily pricing service for structured products and mortgage assets. Real-time pricing and can process thousands of securities in virtually minutes, it says.</P><P align=justify>Joe Sturtevant, co-founder and pricing executive at RiskSpan, comments: "We are now pricing bonds in the manner in which a trader would and providing context that streamlines the audit process."</P>
Что я уже пробовал:
string a = testtitle(); string b = testStory(); string c = ""; string results = ""; string[] aA = a.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); // Regex rgxPTag = new Regex("(<p>.*?<\\/p>)"); Regex rgxPTag = new Regex("(<p>.*?<\\/p>)", RegexOptions.Singleline); string[] bA = rgxPTag.Matches(b).Cast<match>().Select(m => m.Groups[1].Value).ToArray(); if (aA.Length == bA.Length) { for (int i = 0; i < aA.Length; i++) { DateTime dt = DateTime.Today; XDocument doc = new XDocument( new XDeclaration("1.0", "gb2312", string.Empty), new XElement("article", new XElement("status", "Approved"), new XElement("title", aA[i].ToString()), new XElement("subtitle", aA[i].ToString()), new XElement("synopsis", bA[i].ToString() + "..."), new XElement("url", c), new XElement("display_date", dt.ToShortDateString()) )); results = results + Environment.NewLine + doc.ToString(); } return results; } return "Length of aA isnt matching length of bA"; }
Tomas Takac
Ваше регулярное выражение неверно. В вашем тексте есть атрибут align=justify, который вы опускаете из своего регулярного выражения. Кроме того, регулярное выражение по умолчанию чувствительно к регистру. И последнее, но не менее важное: b, c, aA, bA-это не очень хорошие имена переменных.
RickZeeland
Может быть, вам стоит использовать:
новое регулярное выражение ("(< P.*?\\ / p>)", RegexOptions.Однострочный);
Matt T Heffron
Даже если вы исправите регулярное выражение, как было предложено, в приведенном вами примере будет aA с 3 элементами и bA с 4.
Чего вы на самом деле пытаетесь достичь?
(КСТАТИ. Все это .ToString() из aA[i] и bA[i] бессмысленны, значения уже являются строками!)