我将文本从TextView发送到我的后端。要包含换行符,我尝试将textView.text序列化为JSON。
let jsonObject: NSMutableDictionary = NSMutableDictionary()
jsonObject.setValue(textView.text, forKey: "text")
let jsonData: NSData
do {
jsonData = try JSONSerialization.data(withJSONObject: jsonObject, options: JSONSerialization.WritingOptions()) as NSData
let jsonString = NSString(data: jsonData as Data, encoding: String.Encoding.utf8.rawValue) as! String
print(jsonString)
} catch _ {
print ("JSON Failure")
}
}
但由于这是一个字典,因此生成的文本如下所示: {"文本":"测试\ nstack \ n \ noverflow"}
我实际上只需要:测试\ nstack \ n \ noverflow
是否有一种很好的方法可以在swift中转换多行String以获得这些" \ n"对于没有任何额外字符的换行符?
编辑:
结果得到字符串" hello \ n \ n"
源代码如下:
let text = textView.text
let components = text?.components(separatedBy: CharacterSet.newlines).filter({!$0.isEmpty})
let textWithLineFeeds = components?.joined(separator:"\n")
print(textWithLineFeeds!)
print(textView.text)
第一次印刷给出: 测试 你好 上面的换行
第二份印刷声明: 测试 喂
上面的换行
我希望我能看到: 测试\ nhello \ n \ nlinebreak above
答案 0 :(得分:1)
要将带有任意换行符(CR,LF,CRLF等)的文本转换为不同的 - 只有LF - 换行符使用:
let text = "test\r\nstack\n\noverflow\rfoo"
let components = text.components(separatedBy: CharacterSet.newlines).filter({!$0.isEmpty})
let textWithLineFeeds = components.joined(separator:"\n")
如果服务器仅接受CR,请将\n
更改为\r
。