我正在开发一个 iOS 应用程序,我想查找和替换字符串中的内容。基本上,我想同时删除 HTML 标记和注释。
这是我的字符串:
<p>
<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]-->
</p>
<p>
<!--[if gte mso 10]><mce:style><!<br />/* Style Definitions */<br />table.MsoNormalTable<br /> {mso-style-name:"Tableau Normal";<br /> mso-tstyle-rowband-size:0;<br /> mso-tstyle-colband-size:0;<br /> mso-style-noshow:yes;<br /> mso-style-parent:"";<br /> mso-padding-alt:0cm 5.4pt 0cm 5.4pt;<br /> mso-para-margin:0cm;<br /> mso-para-margin-bottom:.0001pt;<br /> mso-pagination:widow-orphan;<br /> font-size:10.0pt;<br /> font-family:"Times New Roman";<br /> mso-ansi-language:#0400;<br /> mso-fareast-language:#0400;<br /> mso-bidi-language:#0400;}<br />--><!--[endif]-->
</p>
这是我的一段代码,试图同时删除 HTML 注释和 HTML 标签:
-(NSString *) stringByStrippingHTML: (NSString*) str
{
NSString *s = str;
NSError *err = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<!--(.*?)-->|<div[^>]+>(.*?)</div>|<[^>]+>"
options:0
error:&err];
NSString *result = [regex stringByReplacingMatchesInString:s
options:0
range:NSMakeRange(0, s.length)
withTemplate:@""];
return result;
}
我的问题是我不应该得到任何东西,但这就是我得到的:
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
-->
两个<p>
标签之间的第一个注释被正确删除,但第二个不想消失......我试图在许多正则表达式在线测试仪上查看结果,看来我的正则表达式是正确的。那么,你们中的任何人都可以告诉我我的问题来自哪里吗?
我在第二条评论中注意到了一个<!
,但我真的不知道它是否来自这里......
非常感谢您的帮助 !
原谅我的英语,我是法国人:)