2016-01-15 68 views
0

我试图为新行转义字符串,即\ n。 例如可以说字符串是: -Swift 2.0新行的转义字符串(字符串编码)

First Line Of String 
second Line of String 
Third Line of String 

现在,如果我用String延伸,并说

func escapeString() -> String{ 
newString = self.stringByRemovingPercentEncoding 
return newString 
} 

这个扩展并没有给我newString作为

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

我需要上面的字符串作为jsonString传递给server.ie我必须对其进行字符编码

+0

也许,我不明白你的需求,但让js =“{\”alfa \“:true \ n \”beta \“:false}”是有效的JSON。尝试打印:-) – user3441734

回答

1

stringByRemovingPercentEncoding适用于percent encoding as used in URLs,正如您可能期望的那样。 (如果不是这样的话,可能来自the docs,其相关部分甚至在Xcode代码完成中显示)。也就是说,它需要一个字符串,如“some%20text%20with%20spaces”,并将其转换为“一些文本与空间”。

如果你想做一个不同类型的字符替换,你需要自己做。但是,这仍然可以是一个班轮:

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

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

+1

斯威夫特3:'扩展名的String {VAR withEscapedNewlines:字符串{ \t回报self.replacingOccurrences(作者: “\ n”,其中: “\\ N”) } }' –