【发布时间】:2016-10-24 02:03:16
【问题描述】:
我正在尝试将 HTML 转换为 NSAttributedString 格式并返回。从 HTML 转换可以正常工作,但是转换回 HTML 给了我无法发送到后端的格式:
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv=Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 16.0px 'Times New Roman'; color: #000000; -webkit-text-stroke: #000000}
span.s1 {font-family: 'Times New Roman'; font-weight: normal; font-style: normal; font-size: 16.00pt; font-kerning: none}
span.s2 {font-family: 'TimesNewRomanPS-BoldMT'; font-weight: bold; font-style: normal; font-size: 16.00pt; font-kerning: none}
span.s3 {font-family: 'TimesNewRomanPS-ItalicMT'; font-weight: normal; font-style: italic; font-size: 16.00pt; font-kerning: none}
span.s4 {font-family: 'TimesNewRomanPS-BoldItalicMT'; font-weight: bold; font-style: italic; font-size: 16.00pt; font-kerning: none}
</style>
</head>
<body>
<p class="p1"><span class="s1">vanlig text </span><span class="s2">bold</span><span class="s1"> </span><span class="s3">italic</span><span class="s1"> </span><span class="s4">bold_italic asd</span></p>
</body>
</html>
我需要发送给我的服务器的字符串/格式不能有 css,需要更像这样:(没有 CSS)
<html>
<body>
<p>vanlig text <b>bold</b> <i>italic</i><b><i>bold_italic asd</i></b>
</p>
</body>
</html>
我已经尝试过这个解决方案但没有成功:NSAttribute string to HTML 我使用 css 保留格式。
到目前为止我的代码:
extension NSAttributedString
{
var htmlString : String
{
let documentAttributes = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType]
if let htmlData = try? self.dataFromRange(NSMakeRange(0, self.length), documentAttributes:documentAttributes),
let htmlString = String(data:htmlData, encoding:NSUTF8StringEncoding) {
return htmlString
}
return ""
}
func attributedStringWithNoTrailingNewLines() -> NSMutableAttributedString
{
let mutableAttributedString = NSMutableAttributedString(attributedString: self)
let nsString = string as NSString
let lastWhitespaceOrNewlineRange = nsString.rangeOfCharacterFromSet(NSCharacterSet.whitespaceAndNewlineCharacterSet(), options: .BackwardsSearch)
if lastWhitespaceOrNewlineRange.length != 0 && NSMaxRange(lastWhitespaceOrNewlineRange) == self.length
{
mutableAttributedString.replaceCharactersInRange(lastWhitespaceOrNewlineRange, withString: "")
}
return mutableAttributedString
}
}
extension String
{
var attributedString : NSAttributedString?
{
if let data = self.dataUsingEncoding(NSUTF8StringEncoding) {
let options = [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType]
let attrStr = try? NSAttributedString(data: data, options: options, documentAttributes: nil)
return attrStr
}
return nil
}
}
【问题讨论】:
-
查看此链接stackoverflow.com/questions/37915304/…。希望对我们有所帮助。
-
我看不出这有什么关系。它只修复了不是我们问题的空格。
-
问题:您的服务器可以管理哪些标签?因为在您的示例中,您给出了“简单的”:
<b><i>etc.如果它只是“限制”,您可以枚举具有有效范围的属性,然后添加自己的标签,如果需要,不要忘记添加“ start"<html><body>和 end 对应。 -
是的。几乎解决了它,并且正在按照您建议的方式进行操作。完成后将在这里发布我使用的代码。
-
你能做到吗?
标签: html ios uiwebview nsattributedstring