从NSString中删除HTML但保留数学符号

时间:2015-02-02 10:01:12

标签: ios objective-c regex cocoa

我需要从NSString中删除所有HTML格式,但我需要保留任何< (小于)与字符串内容相关的符号。

例如:

<p>Dogs:  For dogs <10KGs use 1:1000 solution (1000 µg/ml) diluted to 5-10 ml.</p>

我需要阅读:

Dogs:  For dogs <10KGs use 1:1000 solution (1000 µg/ml) diluted to 5-10 ml.

到目前为止,常见的方法是使用以下内容:

  NSRange r;
  NSString *s = [[self copy] autorelease];
  while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
  s = [s stringByReplacingCharactersInRange:r withString:@""];
  return s;

但是这种方法导致:

  狗:狗:

第一个HTML标记被正确剥离但是&lt; 10KG被假定为HTML标记的开头,其中p&gt;关闭是它,所以删除整个部分。

我该如何处理&lt;什么时候用于内容而不是标签?

1 个答案:

答案 0 :(得分:1)

将您的代码更改为

NSRange r;
NSString *s = [[self copy] autorelease];
while ((r = [s rangeOfString:@"<[^<>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
s = [s stringByReplacingCharactersInRange:r withString:@""];
return s;

DEMO

这将剥离上例中的段落标记。 [^<>]+<>的任何字符匹配一次或多次。