String 新行的Swift 2.0转义字符串(字符串编码)

String 新行的Swift 2.0转义字符串(字符串编码),string,swift,encoding,swift2,ios9,String,Swift,Encoding,Swift2,Ios9,我正在尝试为新行转义字符串,即\n。 例如,假设字符串为:- First Line Of String second Line of String Third Line of String 现在如果我使用字符串扩展名 func escapeString() -> String{ newString = self.stringByRemovingPercentEncoding return newString } 此扩展没有将新闻字符串作为 First Line Of String\

我正在尝试为新行转义字符串,即\n。 例如,假设字符串为:-

First Line Of String
second Line of String
Third Line of String
现在如果我使用字符串扩展名

func escapeString() -> String{
newString =   self.stringByRemovingPercentEncoding
return newString
}
此扩展没有将新闻字符串作为

First Line Of String\nSecond Line Of String\nThird Line Of String

我需要上面的字符串作为jsonString传递给服务器。我必须对它进行字符串编码

stringByRemovingPercentEncoding
是用于,正如您从名称中所期望的那样。(如果不是从这一点,可能是从阅读,其中的相关部分甚至显示在Xcode代码完成中。)也就是说,它接受一个类似“some%20text%20with%20spaces”的字符串,并将其转换为“some text with spaces”

如果你想做一种不同的角色替换,你需要自己做。但这仍然可能是一条直线:

extension String {
    var withEscapedNewlines: String {
        return self.stringByReplacingOccurrencesOfString("\n", withString: "\\n")
    }
}

请注意,
self.stringByReplacingOccurrencesOfString
的第一个参数是传递给Swift编译器的转义码,因此该参数的实际值是换行符(ASCII/UTF8 0x0A)。第二个参数转义反斜杠(在传递给Swift编译器的文本中),因此该参数的实际值是文本
\n

stringByRemovingPercentEncoding
是for,正如您从名称中所期望的那样。(如果不是从这一点,可能是从阅读,其中的相关部分甚至显示在Xcode代码完成中。)也就是说,它接受一个类似“some%20text%20with%20spaces”的字符串,并将其转换为“some text with spaces”

如果你想做一种不同的角色替换,你需要自己做。但这仍然可能是一条直线:

extension String {
    var withEscapedNewlines: String {
        return self.stringByReplacingOccurrencesOfString("\n", withString: "\\n")
    }
}

请注意,
self.stringByReplacingOccurrencesOfString
的第一个参数是传递给Swift编译器的转义码,因此该参数的实际值是换行符(ASCII/UTF8 0x0A)。第二个参数转义反斜杠(在传递给Swift编译器的文本中),因此该参数的实际值是文本
\n

Swift 5

您可以使用
jsonecoder
来转义\n、\、\t、\r、、”等字符,而不是手动替换字符串中的字符,例如:

扩展字符串{
变量转义:字符串{
如果let data=try?JSONEncoder().encode(self){
让转义=字符串(数据:数据,编码:.utf8)!
//删除前导和尾随引号
let set=CharacterSet(charactersIn:“\”)
返回转义的.trimmingCharacters(in:set)
}
回归自我
}
}
让str=“新行-\n,引号-\”,url-https://google.com"
打印(“原件:\(str)”)
打印(“转义:\(str.Escaped)”)
产出:

Original: new line - 
, quote - ", url - https://google.com
Escaped: new line - \n, quote - \", url - https:\/\/google.com


Swift 5

您可以使用
jsonecoder
来转义\n、\、\t、\r、、”等字符,而不是手动替换字符串中的字符,例如:

扩展字符串{
变量转义:字符串{
如果let data=try?JSONEncoder().encode(self){
让转义=字符串(数据:数据,编码:.utf8)!
//删除前导和尾随引号
let set=CharacterSet(charactersIn:“\”)
返回转义的.trimmingCharacters(in:set)
}
回归自我
}
}
让str=“新行-\n,引号-\”,url-https://google.com"
打印(“原件:\(str)”)
打印(“转义:\(str.Escaped)”)
产出:

Original: new line - 
, quote - ", url - https://google.com
Escaped: new line - \n, quote - \", url - https:\/\/google.com


也许,我不理解您的需求,但是让js=“{\'alfa\':true\n\'beta\':false}”是有效的JSON。尝试打印:-)也许,我不理解您的需求,但是让js=“{\'alfa\':true\n\'beta\':false}”是有效的JSON。尝试打印它:-)Swift 3:
extension String{var withEscapedNewlines:String{return self.replacingOccurrences(of:“\n”,with:“\\n”)}
Swift 3:
extension String{var withEscapedNewlines:String{return self.replacingOccurrences(of:“\n”,with:“\\n”)}