如何用正則表達(dá)式提取字符串中的中英文

今天是我人生中第一個(gè)面試,到了那家公司,開始技術(shù)面的時(shí)候我全懵逼了,面試的具體題目我就不說了,大概意思就是讓我將一段字符串中的中英文分割出來,再分別對(duì)中英文添加屬性樣式,要在一個(gè)UILabel中分成兩行顯示.
最后因?yàn)楸扇藢W(xué)藝不精,當(dāng)然被......

這道題目呢本質(zhì)上來講并不是很難,不過為了講的詳細(xì)一些,我會(huì)分解成兩個(gè)步驟來講,每個(gè)步驟我會(huì)分別寫一篇文章來解釋

1.將字符串的中英文分割
2.對(duì)分割出來的字符串添加屬性樣式

那如何在一個(gè)字符串中分割中英文呢?
我第一個(gè)想到的就是正則表達(dá)式,但是我并不會(huì)正則......
好吧,不會(huì)正則表達(dá)式?jīng)]關(guān)系,這種東西網(wǎng)上一大堆,我們只要知道怎么去使用就行了

其實(shí)iOS給我們提供了很多方便的類提供給我們使用,現(xiàn)在我要用到正則我就發(fā)現(xiàn)了iOS中還有一個(gè)NSRegularExpression類,這個(gè)類就可以用來處理正則表達(dá)式相關(guān)的操作

好了說了這么多廢話我就把我的代碼貼出來

封裝的方法

/**
 *  利用正則表達(dá)式將字符串中的特定字符拼接起來并傳出
 *
 *  @param string            傳入的字符串
 *  @param regularExpression 傳入的正則表達(dá)式
 *
 *  @return 返回一個(gè)內(nèi)含所有符合條件的字符串
 */
- (NSString *)processWithString:(NSString *)string regularExpression:(NSString *)regularExpression {
    
    // 創(chuàng)建一個(gè)可變字符串,用來拼接符合條件的字符
    NSMutableString *mString = [[NSMutableString alloc] init];
    // 創(chuàng)建一個(gè)錯(cuò)誤對(duì)象
    NSError *error;
    // 正則
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regularExpression options:0 error:&error];
    // 如果正則沒有錯(cuò)誤進(jìn)行內(nèi)部的代碼
    if (!error) {
        // 將符合條件的字符位置記錄到數(shù)組中
        NSArray *array = [regex matchesInString:string options:0 range:NSMakeRange(0, string.length)];
        // 利用數(shù)組中的位置將所有符合條件的字符拼接起來
        for (NSTextCheckingResult *result in array) {
            NSRange range = [result range];
            NSString *mStr = [string substringWithRange:range];
            [mString appendString:mStr];
        }
        return mString;
    } else {
        NSLog(@"error is %@", error);
    }
    return nil;
}

這是我封裝的一個(gè)方法,原理其實(shí)很簡(jiǎn)單,我也打了很多注釋所以就不講具體的思路了

使用方法

    NSString *string = @"Hello everyone,好久沒有發(fā)簡(jiǎn)書了,發(fā)現(xiàn)最近一次article是兩個(gè)多月前了,真是Nothing is impossible!";
    
    // 用正則表達(dá)式分割出中英文兩個(gè)字符串
    NSString *english = [self processWithString:string regularExpression:@"[a-zA-Z]"];
    NSString *chinese = [self processWithString:string regularExpression:@"[\u4e00-\u9fa5]"];
    NSLog(@"\n%@\n%@",chinese, english);
  • 英文字母(不區(qū)分大小寫)正則表達(dá)式: [a-zA-Z]
  • 中文正則表達(dá)式: [\u4e00-\u9fa5]

其實(shí)我封裝的這個(gè)方法可以使用的地方很多,你只需要調(diào)用一下這個(gè)這方法改變一下正則表達(dá)式就可以講你需要的東西從字符串分割出來,至于你問我正則表達(dá)式......自己去找吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市翻斟,隨后出現(xiàn)的幾起案子湿硝,更是在濱河造成了極大的恐慌糜颠,老刑警劉巖篙挽,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杀捻,死亡現(xiàn)場(chǎng)離奇詭異古沥,居然都是意外死亡彩扔,警方通過查閱死者的電腦和手機(jī)麻削,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蒸痹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人呛哟,你說我怎么就攤上這事叠荠。” “怎么了扫责?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵榛鼎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我鳖孤,道長(zhǎng)者娱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任苏揣,我火速辦了婚禮黄鳍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘平匈。我一直安慰自己框沟,他們只是感情好藏古,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忍燥,像睡著了一般拧晕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灾前,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天防症,我揣著相機(jī)與錄音,去河邊找鬼哎甲。 笑死蔫敲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的炭玫。 我是一名探鬼主播奈嘿,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼吞加!你這毒婦竟也來了裙犹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤衔憨,失蹤者是張志新(化名)和其女友劉穎叶圃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體践图,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掺冠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了码党。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片德崭。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖揖盘,靈堂內(nèi)的尸體忽然破棺而出眉厨,到底是詐尸還是另有隱情,我是刑警寧澤兽狭,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布憾股,位于F島的核電站,受9級(jí)特大地震影響椭符,放射性物質(zhì)發(fā)生泄漏荔燎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一销钝、第九天 我趴在偏房一處隱蔽的房頂上張望有咨。 院中可真熱鬧,春花似錦蒸健、人聲如沸座享。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渣叛。三九已至丈秩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淳衙,已是汗流浹背蘑秽。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箫攀,地道東北人肠牲。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像靴跛,于是被迫代替她去往敵國(guó)和親缀雳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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