私のアプリは、次のような出力を返す貧弱なWebサービスにアクセスします。
Title\n\nInfo1\nInfo2\nInfo3\n ...
明確にするために、テキストは文字通り...
ではなく、情報は文字通り番号が付けられていません。私はそれらが明確であることを示したかっただけです。
このように表示したいUIWebView
:
<p><b>Title</b><ul><li>Info1</li><li>Info2</li><li>Info3</li></ul></p>
またはを使用してこれをどのように達成できますNSRegularExpression
かNSScanner
?NSRegularExpression
使用する正しい式がわからないため、両方について混乱しています。また、結果にアクセスして、適切な形式の文字列に配置する方法がわかりません。
単純に、ロジックは次のようになります。
- char 0から最初の(のみ)出現するまでのすべてのテキストを検索し
\n\n
、それをフォーマットに適合させます@"<p><b>%@</b><ul>",matchedString
- まだテキストが残っている間に、現在の文字と次の
\n
(単一)の出現の間のすべてのテキストを見つけて、フォーマットに適合させます@"<li>%@</li>"
- 残りがなくなったら
\n
、追加@"</ul></p>"
して1日と呼びます。
このロジックを実装する方法、または正規表現でエンコードする方法についてアドバイスしてください。
回答を実装
将来誰かが行き詰まった場合に備えて、答えのその場しのぎの実装を投稿したかっただけです。
NSArray *parts = [self.dogFoodBenefits componentsSeparatedByString:@"\n"];
NSString *benefitsString = [NSString stringWithFormat:@"<h4>Benefits</h4><b>%@</b><p><ul>",[parts objectAtIndex:0]];
for (int i = 2; i < [parts count]; i++) {
if ([[parts objectAtIndex:i] length] > 1)
benefitsString = [benefitsString stringByAppendingFormat:@"<li>%@</li>",[parts objectAtIndex:i]];
}
benefitsString = [benefitsString stringByAppendingString:@"</ul></p>"];