iOS筆記之NSString基礎(chǔ)類(Objective-C)

2018.4.3
文中諸多內(nèi)容屬直接轉(zhuǎn)載,若原作者要求刪除,請聯(lián)系我,立刪。

1. 通過stringByTrimmingCharactersInSet去除字符串兩端的特殊符號

原作者:BlackWolfSky
原文:通過stringByTrimmingCharactersInSet去除字符串兩端的特殊符號

1、函數(shù)簡介
蘋果的NSString類提供了stringByTrimmingCharactersInSet方法過濾字符串兩端的特殊符號,函數(shù)聲明如下:
- (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set;
對于該函數(shù)蘋果官方的說明為:Returns a new string made by removing from both ends of the receiver characters contained in a given character set.  通過官方說明我們知道該函數(shù)將字符串兩端的與set集合中的成員匹配的字符過濾掉。
2、函數(shù)使用
該函數(shù)的入?yún)⑹荖SCharacterSet類型,所以使用該函數(shù)之前需要定義一個NSCharacterSet變量,當(dāng)然也可以使用系統(tǒng)提供的NSCharacterSet常量,如whitespaceAndNewlineCharacterSet、whitespaceCharacterSet等
3、舉例如下:
a、自定義一個NSCharacterSet, 包含需要去除的特殊符號
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"。。。"];
NSString *trimmedString = [string stringByTrimmingCharactersInSet:set];
trimmedString是過濾后的字符串
b、使用系統(tǒng)的集合
NSString *text1 = [TextField.text stringByTrimmingCharactersInSet:[NSCharacterSet
 whitespaceCharacterSet]];//除兩端的空格
NSString *text = [TextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];//去除兩段的空格和回車注釋: 

注釋:
1、whitespaceAndNewlineCharacterSet 
Returns a character set containing only the whitespace characters space (U+0020) and tab (U+0009) and the newline and nextline characters (U+000A–U+000D, U+0085). 
2、whitespaceCharacterSet
Returns a character set containing only the in-line whitespace characters space (U+0020) and tab (U+0009).




2.關(guān)于刪去字符串中不想要的字符

a.如果只是需要簡單刪掉空格或者回車

NSString *string = @"Test string, please enter it";

/* 去掉字符串中的空格和換行 */
string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
string = [string stringByReplacingOccurrencesOfString:@"\n" withString:@""];

/* 或者 */

NSMutableString *mutStr = [NSMutableString stringWithString:string];
NSRange range = {0, string.length};
[mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
range = {0, mutStr.length};
[mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range];
string = [mutStr copy];

b.刪去稍復(fù)雜一些的字符

NSString *string = @"Test string, please enter it";

/* 過濾不想要的(非法)字符,filterString自定義 */
NSString *filterString = @"[]{}(#%-*+=_)\\|~(<>$%^&*)_+ ";
filterString = @" \n";      /* 示例:僅處理空格和換行 */
NSCharacterSet *filterSet = [NSCharacterSet characterSetWithCharactersInString:filterString];
string = [[string componentsSeparatedByCharactersInSet:filterSet] componentsJoinedByString:@""];




3.字符串替換的姿勢

姿勢1 - 針對多語言版本

/* 請將智能設(shè)備靠近手機(jī)并保持開機(jī)狀態(tài)
   Please keep the smart device close to the phone and keep it turned on

   "請將智能設(shè)備%@手機(jī)\n并保持%@狀態(tài)" = "Please keep the smart device %@ the phone and keep it %@";
   "靠近" = "close to";
   "開機(jī)" = "turned on";
*/

NSString *specialString =  @"<*#*>";
NSString *initString = [NSString stringWithFormat:@"請將智能設(shè)備%@手機(jī)\n并保持%@狀態(tài)", specialString, specialString];
NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:17],
                             NSForegroundColorAttributeName:[UIColor lightGrayColor]};

NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]
                                             initWithString:initString attributes:attributes];

NSRange range1 = [attributedText.string rangeOfString:specialString];
attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:17],
               NSForegroundColorAttributeName:[UIColor blackColor]};
[attributedText replaceCharactersInRange:range1
                    withAttributedString:[[NSAttributedString alloc]
                                          initWithString:@"靠近" attributes:attributes]];

NSRange range2 = [attributedText.string rangeOfString:specialString];
attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:17],
               NSForegroundColorAttributeName:[UIColor blackColor]};
[attributedText replaceCharactersInRange:range2
                    withAttributedString:[[NSAttributedString alloc]
                                          initWithString:@"開機(jī)" attributes:attributes]];

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

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

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,557評論 0 13
  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,562評論 1 44
  • 今天開始練習(xí)專注的讀書、專注的想一件事兒。其實(shí)這本來也是我擅長的,只是手機(jī)毀人,我覺得我有點(diǎn)兒「攜帯依存癥」總看...
    貓公主喵閱讀 299評論 0 0
  • Given a string containing just the characters '(', ')', '...
    a_void閱讀 215評論 0 0
  • 時間日期類:NSDate 時間的格式符:注意大小寫年 year ->y月 ...
    J_coco閱讀 947評論 0 2

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