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

Remove HTML from NSString but keep maths symbols

我需要从 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;

但是这个方法导致:

Dogs: For dogs

第一个 HTML 标签被正确剥离,但 <10KGs 被假定为 HTML 标签的开头,p> 结束就是它,因此删除了整个部分。

当 < 用于内容而非标签时如何处理?

将您的代码更改为,

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

DEMO

这将去除上例中的段落标签。 [^<>]+ 匹配任何字符但不匹配 <> 一次或多次。