在我的Cocoa应用程序中我有一个文本字段,用户应按ALT + ENTER插入换行符。这很好......当我将它的值作为NSString并执行NSLog时,我实际上看到新行是打印的。 但是当我将字符串附加到带有appendString的html页面的一部分然后使用loadHTMLString时,在生成的网页中完全忽略了新行......
请您给我一个建议或文档链接阅读?我真的不知道!
非常感谢!!!
答案 0 :(得分:1)
浏览器不呈现普通换行符
用换行符标记\n
)替换换行符(<br>
)。
NSString *newString = [oldString stringByReplacingOccurancesOfString:@"\n" withString:@"<br>"]
<br>
代码会在网页中显示为换行符。
答案 1 :(得分:0)
问题是字符串中存在的新行按字面插入到html文档源中。在呈现html文档时,html源代码中的换行符不会逐字呈现。 (想象一下,如果他们这样做了;由于分隔html标签的所有新行字符,你会显示许多额外的新行。)
相反,您应该处理用户输入的原始文本以生成html源代码,该源代码将呈现为用户输入的内容。因此,您必须将文本分解为段落,然后插入适当的<p></p>
标记。
您可以将NSString方法enumerateSubstringsInRange:options:usingBlock:
与NSStringEnumerationByParagraphs
选项一起使用。处理每个段落。
此外,您应该清理用户输入的数据。例如,如果用户输入一些html标签,您不希望页面混乱。对数据进行静态化可能就像用适当的html实体替换文本中的所有受限制字符一样简单,但这取决于你正在做什么。