iOS sting處理(可變橱野,不可變)

Objective-C 中核心處理字符串的類是 NSString 與 NSMutableString 朽缴,這兩個類最大的區(qū)別就是NSString 創(chuàng)建賦值以后該字符串的內(nèi)容與長度不能在動態(tài)的更改,除非重新給這個字符串賦值水援。而NSMutableString 創(chuàng)建賦值以后可以動態(tài)在該字符串上更改內(nèi)容與長度密强。

```

1.創(chuàng)建NSString字符串

NSString 與 char* 最大的區(qū)別就是 NSString是一個objective對象,而char* 是一個字節(jié)數(shù)組。@+" 字符串 " 這個符號為objective-c NSString 字符串常量的標(biāo)準(zhǔn)用法蜗元,char* 創(chuàng)建的時候 無需添加@

- (void)viewDidLoad

{

[super viewDidLoad];

//經(jīng)典的字符串賦值

NSString *str0 = @"my name is justcoding !";

//字符串格式化合并分別包括

//NSString*類型 int類型 char*類型

NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"justcoding@gmail.com"];

//字符串賦值 參數(shù)中只可以寫一個字符串 和第一種很像

NSString *str2 = [NSString stringWithString:@"我是字符串"];

//字符串轉(zhuǎn)換為utf-8格式 參數(shù)為char*類型

NSString *str3 = [NSString stringWithUTF8String:"字符串轉(zhuǎn)換utf-8格式"];

//字符串合并

int i? = 100;

char*c = "xuanyusong";

NSString *temp = @"我是臨時字符串";

//在字符串temp的基礎(chǔ)繼續(xù)添加 int i 與 char* c 組成一個新的字符串

NSString *str4 = [temp stringByAppendingFormat:@"整型: %d 字符型 :%s",i,c];

//在字符串temp的基礎(chǔ)繼續(xù)添加temp 并組成一個新的字符串

NSString *str5 = [temp stringByAppendingString:temp];

//字符串輸出

NSLog(@"str0 = %@", str0);

NSLog(@"str1 = %@", str1);

NSLog(@"str2 = %@", str2);

NSLog(@"str3 = %@", str3);

NSLog(@"str4 = %@", str4);

NSLog(@"str5 = %@", str5);

}

2.字符串的遍歷

每一個字符串其實是由若干個char字符組成或渤,字符串的遍歷實際上就是將字符串中的每一個字符提取出來。

- (void)viewDidLoad

{

[super viewDidLoad];

//經(jīng)典的字符串賦值

NSString *str = @"YUSONGMOMO";

//字符串的長度

int count = [str length];

NSLog(@"字符串的長度是%d",count);

//遍歷字符串中的每一個字符

for(int i =0; i < count; i++)

{

char c = [str characterAtIndex:i];

NSLog(@"字符串第 %d 位為 %c",i,c);

}

}

3.字符串的比較

isEqualToString 比較字符串是否完全相等奕扣,大小寫不一樣也無法完全匹配薪鹦。

hasPrefixe 匹配字符串頭

haSuffix? ? 匹配字符串的尾巴

- (void)viewDidLoad

{

[super viewDidLoad];

NSString *str0 = @"justcoding";

NSString *str1 = @"justcoding";

//字符串完全相等比較

if([str0 isEqualToString:str1])

{

NSLog(@"字符串完全相等");

}

//字符串以開頭比較

if([str0 hasPrefix:@"just"])

{

NSLog(@"字符串str0以just開頭");

}

//字符串以結(jié)尾比較

if([str1 hasSuffix:@"coding"])

{

NSLog(@"str1字符串以coding結(jié)尾");

}

}

對比字符串//isEqualToString方法

NSString *astring01 = @"This is a String!";

NSString *astring02 = @"This is a String!";

BOOL result = [astring01 isEqualToString:astring02];

NSLog(@"result:%d",result);

//compare方法(comparer返回的三種值)

NSString *astring01 = @"This is a String!";

NSString *astring02 = @"This is a String!";

BOOL result = [astring01 compare:astring02] = = NSOrderedSame;

NSLog(@"result:%d",result);

//NSOrderedSame 判斷兩者內(nèi)容是否相同

NSString *astring01 = @"this is a String!";

NSString *astring02 = @"This is a String!";

BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;

NSLog(@"result:%d",result);

//NSOrderedDescending 判斷兩對象值的大小(按字母順序進(jìn)行比較,astring02小于astring01為真)

//不考慮大 小寫比較字符串1

NSString *astring01 = @"this is a String!";

NSString *astring02 = @"This is a String!";

BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;

NSLog(@"result:%d",result);

//NSOrderedDescending判斷兩對象值的大小(按字母順序進(jìn)行比較惯豆,astring02小于astring01為 真)

//不考慮大小寫比較字符串2

NSString *astring01 = @"this is a String!";

NSString *astring02 = @"This is a String!";

BOOL result = [astring01 compare:astring02 options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;

NSLog(@"result:%d",result);

//NSCaseInsensitiveSearch:不區(qū)分大小寫比較 NSLiteralSearch:進(jìn)行完全比較池磁,區(qū)分大小寫 NSNumericSearch:比較字符串的字符個數(shù),而不是字符值循帐。

文件字符串操作(讀寫)

C代碼? 收藏代碼

//從文件讀取字符串:initWithContentsOfFile方法

NSString *path = @"astring.text";

NSString *astring = [[NSString alloc] initWithContentsOfFile:path];

NSLog(@"astring:%@",astring);

[astring release]; //astring=nil;

C代碼? 收藏代碼

//寫字符串到文件:writeToFile方法

NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];

NSLog(@"astring:%@",astring);

NSString *path = @"astring.text";

[astring writeToFile: path atomically: YES];

[astring release];? //astring=nil;

* ios5 不支持release iOS應(yīng)用開發(fā):什么是ARC框仔?

C代碼? 收藏代碼

//擴(kuò)展路徑

NSString *Path = @"~/NSData.txt";

NSString *absolutePath = [Path stringByExpandingTildeInPath];

NSLog(@"absolutePath:%@",absolutePath);

NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);

C代碼? 收藏代碼

//文件擴(kuò)展名

NSString *Path = @"~/NSData.txt";

NSLog(@"Extension:%@",[Path pathExtension]);

5. 字符串的截取和大小寫

C代碼? 收藏代碼

//改變字符串的大小寫

NSString *string1 = @"A String";

NSString *string2 = @"String";

NSLog(@"string1:%@",[string1 uppercaseString]);//大寫

NSLog(@"string2:%@",[string2 lowercaseString]);//小寫

NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小

- (void)viewDidLoad

{

[super viewDidLoad];

NSString *str0 = @"中文my name is xuanyusong";

NSString *temp = @"is";

NSRange rang = [str0 rangeOfString:temp];

NSLog(@"搜索的字符串在str0中起始點的index 為 %d", rang.location);

NSLog(@"搜索的字符串在str0中結(jié)束點的index 為 %d", rang.location + rang.length);

//將搜索中的字符串替換成為一個新的字符串

NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"哇咔咔卡卡咔"];

NSLog(@"替換后字符串為%@", str);

//將字符串中" " 全部替換成 *

str = [str0 stringByReplacingOccurrencesOfString :@" " withString:@"@"];

NSLog(@"替換后字符串為%@", str);

}

使用alloc在內(nèi)存中創(chuàng)建字符串對象后邊可以動態(tài)的操作這個字符串,修改與添加等拄养。

appendstring 方法:向字符串尾部添加一個字符串。

appendFormat方法:向字符串尾部添加多個類型的字符串,可以添加任意數(shù)量與類型的字符串瘪匿。

C代碼? 收藏代碼

- (void)viewDidLoad

{

[super viewDidLoad];

NSMutableString * str = [[NSMutableString alloc] init];

//添加普通的字符串

[str appendString:@"aaa"];

//添加字符串 整型 字符型

[str appendFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"justcoding@gmail.com"];

NSLog(@"str = %@",str);

}

字符串中刪除元素

stringWithString 方法:用于創(chuàng)建字符串初始化賦值

rangeOfString方法:傳入字符串返回一個在該字符串中的范圍 也可以寫 NSMakeRange(0, 3) 意思是范圍在字符串0位到第3位

deleteCharactersInRange:刪除字符串 參數(shù)為Range 就是刪除的范圍跛梗。

C代碼? 收藏代碼

- (void)viewDidLoad

{

[super viewDidLoad];

//創(chuàng)建字符串

NSMutableString *str = [NSMutableString stringWithString:@"justcoding is best!"];

//刪除字符串中含"justcoding"的字符

[str deleteCharactersInRange: [str rangeOfString: @"justcoding"]];

NSLog(@"str = %@",str);

}

字符串插入

stringWithString 方法:用于創(chuàng)建字符串初始化賦值

insertString方法:第一個參數(shù) 插入的字符串對象, 第二個參數(shù) 插入的位置棋弥。

C代碼? 收藏代碼

- (void)viewDidLoad

{

[super viewDidLoad];

//創(chuàng)建字符串

NSMutableString *str = [NSMutableString stringWithString:@"justcoding is"];

//在str第10位插入字符串

[str insertString:@"best man" atIndex:10];

NSLog(@"str = %@",str);

}

字符串與指定類型轉(zhuǎn)換

如果轉(zhuǎn)換的參數(shù)非法的話不會拋出異常核偿,好比用中文去轉(zhuǎn)整型。不會報錯 但是轉(zhuǎn)換結(jié)果為 0? 顽染,默認(rèn)值漾岳。

C代碼? 收藏代碼

- (void)viewDidLoad

{

[super viewDidLoad];

//字符串轉(zhuǎn)整型

NSString *str0 = @"1121";

//NSString *str0 = @"中國";

//把字符串強(qiáng)轉(zhuǎn)成整型

int i = [str0 intValue];

NSLog (@"轉(zhuǎn)換后:%i", i);

//字符串轉(zhuǎn)interger

NSString *str1 = @"1985";

// NSString *str1 = @"中國";

//把字符串強(qiáng)轉(zhuǎn)成interger

NSInteger ii = [str1 integerValue];

NSLog (@"轉(zhuǎn)換后:%i", ii);

//字符串轉(zhuǎn)double

NSString *str2 = @"3.145926";

//NSString *str2 = @"中國";

//把字符串強(qiáng)轉(zhuǎn)成double

double d = [str2 doubleValue];

NSLog (@"轉(zhuǎn)換后:%f", d);

//字符串轉(zhuǎn)float

NSString *str3 = @"3.145926";

//NSString *str3 = @"中國";

//把字符串強(qiáng)轉(zhuǎn)成float

double f = [str3 floatValue];

NSLog (@"轉(zhuǎn)換后:%f", f);

}

NSString 常用方法總結(jié)

+(id)stringWithContentsOfFile:path encoding:enc err 創(chuàng)建一個新字符串并將其設(shè)置為 path 指定文件的內(nèi)容,使用字符編碼 enc粉寞,在err 上返回錯誤

+(id)stringWithContentsOfURL:url encoding:enc err 創(chuàng)建一個新字符串并將其設(shè)置為 url 所指向的內(nèi)容尼荆,使用字符編碼 enc,在err 上返回錯誤

+(id)string 創(chuàng)建一個新的空字符串

+(id)stringWithString:nsstring 創(chuàng)建一個新字符串唧垦,將其內(nèi)容設(shè)置為 nsstring 內(nèi)容

-(id)initWithString:nsstring 將字符串內(nèi)容設(shè)置為 nsstring 內(nèi)容

-(id)initWithContentsOfFile:path encoding:enc error:err 將字符串設(shè)置為 path 指定文件的內(nèi)容捅儒,使用字符編碼 enc,在err 上返回錯誤

-(id)initWithContentsOfURL:url encoding:enc error:err 將字符串設(shè)置為 url 所指向的內(nèi)容振亮,使用字符編碼 enc巧还,在err 上返回錯誤

-(UNSigned int)length 返回字符串中字符數(shù)目

-(unichar)characterAtindex:i 返回索引i 所在UniCode 字符

-(NSString*)substringFromIndex:i 返回從索引 i 開始到結(jié)尾的子字符串

-(NSString*)substringWithRange:range 根據(jù)指定范圍返回子字符串

-(NSString*)substringToIndex:i 返回從字符串開始到 索引 i 的子字符串

-(NSComparator*)caseInsensitiveCompare:nsstring 比較兩個字符串大小,忽略大小寫

-(NSComparator*)compare:nsstring 比較兩個字符串大小

-(BOOL)hasPrefix:nsstring 測試字符串是否以 nsstring 開始

-(BOOL)hasSuffix:nsstring 測試字符串是否以 nsstring 結(jié)尾

-(BOOL)isEqualToString:nsstring 測試兩個字符串是否相等

-(NSString*)capitalizedString 返回字符串坊秸,串中的每個單詞的首字母大寫麸祷,其余字母小寫

-(NSString*)lowercaseString 返回轉(zhuǎn)換為小寫的字符串

-(NSString*)uppercaseString 返回轉(zhuǎn)換為大寫的字符串

-(const char*)UTF8String 返回UTF8編碼格式的字符串

-(double)doubleValue 返回轉(zhuǎn)換為double 類型的字符串

-(float)floatValue 返回轉(zhuǎn)換為 float 類型的字符串

-(NSInteger)integerValue 返回轉(zhuǎn)換為 NSInteger 類型的新字符串

-(int)intvalue 返回轉(zhuǎn)換為 int 的字符串

NSMutableString 可修改字符串常用方法

+(id)stringWithCapacity:size 創(chuàng)建一個字符串,容量為size大小

-(id)initWithCapacity:size 初始化一個字符串褒搔,容量為size

-(void)setString:nsstring 將字符串設(shè)置為 nsstring

-(void)appendString:nsstring 在字符串末尾追加字符串 nsstring

-(void)deleteCharatersInRange:range 刪除指定range 中的字符

-(void)insertString:nsstring atIndex:i 以索引 i 為起始位置插入 nsstring

-(void)replaceCharatersInRange;range withString:nsstring 使用 nsstring 替換 range 指定的字符

-(void)replaceOccurrencesOfString:nsstring withString:nsstring2 options:opts range:range 根據(jù)選項 opts 阶牍,使用指定 range 中的nsstring2 替換所有的 nsstring

```

文章有部分摘自其他博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市站超,隨后出現(xiàn)的幾起案子荸恕,更是在濱河造成了極大的恐慌,老刑警劉巖死相,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件融求,死亡現(xiàn)場離奇詭異,居然都是意外死亡算撮,警方通過查閱死者的電腦和手機(jī)生宛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肮柜,“玉大人陷舅,你說我怎么就攤上這事∩蠖矗” “怎么了莱睁?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我仰剿,道長创淡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任南吮,我火速辦了婚禮琳彩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘部凑。我一直安慰自己露乏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布涂邀。 她就那樣靜靜地躺著瘟仿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪必孤。 梳的紋絲不亂的頭發(fā)上猾骡,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音敷搪,去河邊找鬼兴想。 笑死,一個胖子當(dāng)著我的面吹牛赡勘,可吹牛的內(nèi)容都是我干的嫂便。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闸与,長吁一口氣:“原來是場噩夢啊……” “哼毙替!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起践樱,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤厂画,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拷邢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袱院,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年瞭稼,在試婚紗的時候發(fā)現(xiàn)自己被綠了忽洛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡环肘,死狀恐怖哩俭,靈堂內(nèi)的尸體忽然破棺而出牢裳,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布掂骏,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜续誉,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一莱没、第九天 我趴在偏房一處隱蔽的房頂上張望初肉。 院中可真熱鬧,春花似錦饰躲、人聲如沸牙咏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妄壶。三九已至,卻和暖如春寄狼,著一層夾襖步出監(jiān)牢的瞬間丁寄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工泊愧, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留伊磺,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓删咱,卻偏偏與公主長得像屑埋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子痰滋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

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