NSString簡單細說(十二)—— 字符串的替換

版本記錄

版本號 時間
V1.0 2017.05.25

前言

前面我簡單的寫了些NSString的初始化厕倍,寫了幾篇刚夺,都不難者蠕,但是可以對新手有一定的小幫助咧党,對于大神級人物可以略過這幾篇逊朽,NSString本來就沒有難的,都是細枝末節(jié)砰逻,忘記了查一下就會了旋恼,沒有技術(shù)難點,下面我們繼續(xù)~~~
1. NSString簡單細說(一)—— NSString整體架構(gòu)
2. NSString簡單細說(二)—— NSString的初始化
3. NSString簡單細說(三)—— NSString初始化
4. NSString簡單細說(四)—— 從URL初始化
5. NSString簡單細說(五)—— 向文件或者URL寫入
6. NSString簡單細說(六)—— 字符串的長度
7. NSString簡單細說(七)—— 與C字符串的轉(zhuǎn)化
8. NSString簡單細說(八)—— 識別和比較字符串
9. NSString簡單細說(九)—— 字符串的合并
10. NSString簡單細說(十)—— 字符串的分解
11. NSString簡單細說(十一)—— 字符串的查找

字符串的替換

一统台、- (NSString ***)stringByReplacingOccurrencesOfString:(NSString ****)target withString:(NSString ***)replacement;

直接看代碼

    /**
     * 1. - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
     *
     *  @param target:The string to replace.
     *  @param replacement:The string with which to replace target.
     *
     *  @reuturn: A new string in which all occurrences of target in the receiver are replaced by replacement.
     */
    
    //字符串
    NSString *testStr = @"212eAhohgivAieye0oAhsoIFIFUFAYDSAT";
    NSString *resultStr = [testStr stringByReplacingOccurrencesOfString:@"A" withString:@"--"];
    NSLog(@"resultStr = %@",resultStr);

看輸出結(jié)果

2017-05-25 01:14:25.253 NSString你會用嗎雕擂?[3122:140209] resultStr = 212e--hohgiv--ieye0o--hsoIFIFUF--YDS--T

結(jié)論:簡單且容易理解。


二贱勃、- (NSString *****)stringByReplacingOccurrencesOfString:(NSString *****)target withString:(NSString ***)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange;

這個方法有四個參數(shù)我們先看一下參數(shù):

方法參數(shù)

這里參數(shù)NSStringCompareOptions是一個枚舉井赌,是對替換方法的選項參數(shù)進行配置的。這個其實大家都很熟悉了贵扰,在說到字符串的比較時仇穗,說過這個枚舉值,這里只給出大家列出來戚绕,自己看吧纹坐。如果不考慮這個參數(shù)的限制可以傳入0。


typedef NS_OPTIONS(NSUInteger, NSStringCompareOptions) {
    NSCaseInsensitiveSearch = 1,
    NSLiteralSearch = 2,        /* Exact character-by-character equivalence */
    NSBackwardsSearch = 4,      /* Search from end of source string */
    NSAnchoredSearch = 8,       /* Search is limited to start (or end, if NSBackwardsSearch) of source string */
    NSNumericSearch = 64,       /* Added in 10.2; Numbers within strings are compared using numeric value, that is, Foo2.txt < Foo7.txt < Foo25.txt; only applies to compare methods, not find */
    NSDiacriticInsensitiveSearch NS_ENUM_AVAILABLE(10_5, 2_0) = 128, /* If specified, ignores diacritics (o-umlaut == o) */
    NSWidthInsensitiveSearch NS_ENUM_AVAILABLE(10_5, 2_0) = 256, /* If specified, ignores width differences ('a' == UFF41) */
    NSForcedOrderingSearch NS_ENUM_AVAILABLE(10_5, 2_0) = 512, /* If specified, comparisons are forced to return either NSOrderedAscending or NSOrderedDescending if the strings are equivalent but not strictly equal, for stability when sorting (e.g. "aaa" > "AAA" with NSCaseInsensitiveSearch specified) */
    NSRegularExpressionSearch NS_ENUM_AVAILABLE(10_7, 3_2) = 1024    /* Applies to rangeOfString:..., stringByReplacingOccurrencesOfString:..., and replaceOccurrencesOfString:... methods only; the search string is treated as an ICU-compatible regular expression; if set, no other options can apply except NSCaseInsensitiveSearch and NSAnchoredSearch */
};

下面還是直接看代碼舞丛。

    /**
     * 2. - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange;
     *
     *  @param target:The string to replace.
     *  @param replacement:The string with which to replace target.
     *  @param options:A mask of options to use when comparing target with the receiver. Pass 0 to specify no options.
     *  @param searchRange:The range in the receiver in which to search for target.
     *
     *  @reuturn: A new string in which all occurrences of target, matched using options, in searchRange of the receiver are replaced by replacement.
     */
    
    //例1
    NSString *testStr1 = @"2a12eAhohgivAieye0oAhsoIaFIFUFAYDSAT";
    NSString *resultStr1 = [testStr1 stringByReplacingOccurrencesOfString:@"A" withString:@"--" options:NSCaseInsensitiveSearch range:NSMakeRange(0, testStr1.length)];
    NSLog(@"resultStr1 = %@",resultStr1);
    
    //例2
    NSString *testStr = @"2a12eAhohgivAieye0oAhsoIaFIFUFAYDSAT";
    NSString *resultStr = [testStr stringByReplacingOccurrencesOfString:@"A" withString:@"--" options:NSCaseInsensitiveSearch range:NSMakeRange(0, 5)];
    NSLog(@"resultStr = %@",resultStr);

看輸出結(jié)果

2017-05-25 23:02:15.045 NSString你會用嗎耘子?[1330:37453] resultStr1 = 2--12e--hohgiv--ieye0o--hsoI--FIFUF--YDS--T
2017-05-25 23:02:15.046 NSString你會用嗎?[1330:37453] resultStr = 2--12eAhohgivAieye0oAhsoIaFIFUFAYDSAT

結(jié)論:注意例1中是不區(qū)分大小寫的全部長度字符串的替換球切,例2中是不區(qū)分大小寫的length = 5的字符串的替換谷誓。


三、- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement;

直接看代碼吧欧聘。

    /**
     * 3. - (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString ***)replacement;
     *
     *  @param range:A range of characters in the receiver
     *  @param replacement:The string with which to replace target.
     *
     *  @reuturn: A new string in which the characters in range of the receiver are replaced by replacement.
     */
    
    //例1
    NSString *testStr1 = @"2a12eAhohgivAieye0oAhsoIaFIFUFAYDSAT";
    NSRange range1 = NSMakeRange(0, testStr1.length);
    NSString *resultStr1 = [testStr1 stringByReplacingCharactersInRange:range1 withString:@"--"];
    NSLog(@"resultStr1 = %@",resultStr1);
    
    //例2
    NSString *testStr = @"2a12eAhohgivAieye0oAhsoIaFIFUFAYDSAT";
    NSRange range = NSMakeRange(0, 2);
    NSString *resultStr = [testStr stringByReplacingCharactersInRange:range withString:@"--"];
    NSLog(@"resultStr = %@",resultStr);

看輸出結(jié)果

2017-05-25 23:12:56.140 NSString你會用嗎片林?[1463:43995] resultStr1 = --
2017-05-25 23:12:56.141 NSString你會用嗎?[1463:43995] resultStr = --12eAhohgivAieye0oAhsoIaFIFUFAYDSAT

結(jié)論:這個很簡單了吧怀骤,都能看懂费封,例1就是將全部長度的字符串替換為指定的字符串,例2是將指定長度和位置的字符串替換為指定的字符串蒋伦。

后記

慢慢來弓摘,一個一個的大家說,未完痕届,待續(xù)~~~

思念
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末韧献,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子研叫,更是在濱河造成了極大的恐慌锤窑,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嚷炉,死亡現(xiàn)場離奇詭異渊啰,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門绘证,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隧膏,“玉大人,你說我怎么就攤上這事嚷那“恚” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵魏宽,是天一觀的道長腐泻。 經(jīng)常有香客問我,道長队询,這世上最難降的妖魔是什么贫悄? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮娘摔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唤反。我一直安慰自己凳寺,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布彤侍。 她就那樣靜靜地躺著肠缨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盏阶。 梳的紋絲不亂的頭發(fā)上晒奕,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音名斟,去河邊找鬼脑慧。 笑死,一個胖子當(dāng)著我的面吹牛砰盐,可吹牛的內(nèi)容都是我干的闷袒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼岩梳,長吁一口氣:“原來是場噩夢啊……” “哼囊骤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冀值,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤也物,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后列疗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滑蚯,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年作彤,在試婚紗的時候發(fā)現(xiàn)自己被綠了膘魄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乌逐。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖创葡,靈堂內(nèi)的尸體忽然破棺而出浙踢,到底是詐尸還是另有隱情,我是刑警寧澤灿渴,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布洛波,位于F島的核電站,受9級特大地震影響骚露,放射性物質(zhì)發(fā)生泄漏蹬挤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一棘幸、第九天 我趴在偏房一處隱蔽的房頂上張望焰扳。 院中可真熱鬧,春花似錦误续、人聲如沸吨悍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽育瓜。三九已至,卻和暖如春栽烂,著一層夾襖步出監(jiān)牢的瞬間躏仇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工腺办, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留焰手,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓菇晃,卻偏偏與公主長得像册倒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子磺送,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容