1

私のアプリは、次のような出力を返す貧弱なWebサービスにアクセスします。

Title\n\nInfo1\nInfo2\nInfo3\n ...

明確にするために、テキストは文字通り...ではなく、情報は文字通り番号が付けられていません。私はそれらが明確であることを示したかっただけです。

このように表示したいUIWebView

<p><b>Title</b><ul><li>Info1</li><li>Info2</li><li>Info3</li></ul></p>

またはを使用してこれをどのように達成できますNSRegularExpressionNSScannerNSRegularExpression使用する正しい式がわからないため、両方について混乱しています。また、結果にアクセスして、適切な形式の文字列に配置する方法がわかりません。

単純に、ロジックは次のようになります。

  1. char 0から最初の(のみ)出現するまでのすべてのテキストを検索し\n\n、それをフォーマットに適合させます@"<p><b>%@</b><ul>",matchedString
  2. まだテキストが残っている間に、現在の文字と次の\n(単一)の出現の間のすべてのテキストを見つけて、フォーマットに適合させます@"<li>%@</li>"
  3. 残りがなくなったら\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>"];
4

2 に答える 2

1

\n\nメソッドを使用して文字列を単純に分割する方が簡単だと思いますcomponentsSeparatedByString:

NSArray *parts = [webTextStr componentsSeparatedByString:@"\n\n"];
// Use the initial or the only element inside <b></b> tag
// Put the remaining elements, if any, in the <li></li> tags
于 2012-03-25T12:49:21.410 に答える
0

-[NSString componentsSeparatedByString:] メソッドを使用して、必要なものを文字列の配列として取得できます。

于 2012-03-25T12:54:34.157 に答える