iOS字符串如何转为Raw String

问题分析

在javascript ES6中,String多了一个方法String.raw``,详见http://docs.w3cub.com/javascript/global_objects/string/raw/。String.raw``可以把一个普通的字符串转为Raw String。

举个栗子,字符串"\abc",是3个字符构成,分别是'\a','b','c',通过String.raw``后,可以变成4个字符:'\','a','b','c',也就是把字符串中的'\'表示其本身,而不是转义符。也就是把"\abc"转变成了"\\abc"。

但是在iOS中没有String.raw``类似的方法,而且在iOS9以下UIWebView/WKWebView中,不支持ES6语法,没办法使用String.raw``,所以只能通过原生转换。那么在iOS中如何转换呢?

最容易想到的是通过替换,把"\"替换成"\\"不就行了?思路是对的,但是替换不了,因为"\"不是一个单独的字符,"\a"才是一个字符。

那么把"\a"替换成"\\a"呢?貌似是可以的,但是前提是得知道"\"后面的字符。在实际中,很多情况是不知道"\"后面的字符的,或者知道但是字符特别多,都不好处理。

这里提供一种方法可以完成转换,就是通过escape编码。

实现过程

对原字符串escape编码——替换——escape解码
例如字符串"\abc",首先进行escape编码,编码方法请点击,编码后的字符串为"%5Cabc"。和原字符串相比可以发现,"\"变成了"%5C",其他的没有变化。是的,"\"不再是转义符,而变成了普通字符串,那么就可以对"%5C"进行替换了。如下所示

NSString *str  = @"%5Cabc";
[str stringByReplacingOccurrencesOfString:@"%5C" withString:@"%5C%5C"];

这时候变为"%5C%5Cabc",最后再对str进行escape解码:

str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

那么,字符串str就变成"\\abc"了,相当于完成了Raw String的转变。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,167评论 0 7
  • 字符的 Unicode 表示法 codePointAt() String.fromCodePoint() 字符串的...
    卞卞村长L阅读 780评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,848评论 0 10
  • 稻盛和夫在《干法》一书中谈到:“完美主义”不是“更好”,而是“至高无上“最佳”这个词,是同别人比较,意思是比较起来...
    胡青青阅读 209评论 0 0
  • 2018-10-07 事件:重庆深研同学聚会,谈合作做NLP分平台或者工作室的事;由不断裂变的学院工作人员冬梅搭建...
    老龙_8457阅读 141评论 0 0