iOS字符串如何轉(zhuǎn)為Raw String

問題分析

在javascript ES6中,String多了一個方法String.raw``,詳見http://docs.w3cub.com/javascript/global_objects/string/raw/。String.raw``可以把一個普通的字符串轉(zhuǎn)為Raw String。

舉個栗子,字符串"\abc",是3個字符構(gòu)成,分別是'\a','b','c',通過String.raw``后,可以變成4個字符:'\','a','b','c',也就是把字符串中的'\'表示其本身,而不是轉(zhuǎn)義符。也就是把"\abc"轉(zhuǎn)變成了"\\abc"。

但是在iOS中沒有String.raw``類似的方法,而且在iOS9以下UIWebView/WKWebView中,不支持ES6語法,沒辦法使用String.raw``,所以只能通過原生轉(zhuǎn)換。那么在iOS中如何轉(zhuǎn)換呢?

最容易想到的是通過替換,把"\"替換成"\\"不就行了?思路是對的,但是替換不了,因為"\"不是一個單獨的字符,"\a"才是一個字符。

那么把"\a"替換成"\\a"呢?貌似是可以的,但是前提是得知道"\"后面的字符。在實際中,很多情況是不知道"\"后面的字符的,或者知道但是字符特別多,都不好處理。

這里提供一種方法可以完成轉(zhuǎn)換,就是通過escape編碼。

實現(xiàn)過程

對原字符串escape編碼——替換——escape解碼
例如字符串"\abc",首先進行escape編碼,編碼方法請點擊,編碼后的字符串為"%5Cabc"。和原字符串相比可以發(fā)現(xiàn),"\"變成了"%5C",其他的沒有變化。是的,"\"不再是轉(zhuǎn)義符,而變成了普通字符串,那么就可以對"%5C"進行替換了。如下所示

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

這時候變?yōu)?%5C%5Cabc",最后再對str進行escape解碼:

str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

那么,字符串str就變成"\\abc"了,相當于完成了Raw String的轉(zhuǎn)變。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最先接觸編程的知識是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識,c語言,java語言,單片機的匯編語言等;大學(xué)畢...
    oceanfive閱讀 3,395評論 0 7
  • 字符的 Unicode 表示法 codePointAt() String.fromCodePoint() 字符串的...
    卞卞村長L閱讀 840評論 0 0
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,335評論 0 10
  • 稻盛和夫在《干法》一書中談到:“完美主義”不是“更好”,而是“至高無上“最佳”這個詞,是同別人比較,意思是比較起來...
    胡青青閱讀 231評論 0 0
  • 2018-10-07 事件:重慶深研同學(xué)聚會,談合作做NLP分平臺或者工作室的事;由不斷裂變的學(xué)院工作人員冬梅搭建...
    老龍_8457閱讀 160評論 0 0

友情鏈接更多精彩內(nèi)容