1.建立nsstring字元串
nsstring 與 char* 最大的差別就是 nsstring是一個objective對象,而char* 是一個位元組數組。@+" 字元串 " 這個符号為objective-c nsstring 字元串常量的标準用法,char* 建立的時候 無需添加@
- (void)viewdidload
[super viewdidload];
//經典的字元串指派
nsstring *str0 = @"my name is justcoding !";
//字元串格式化合并分别包括
//nsstring*類型 int類型 char*類型
nsstring *str1 = [nsstring stringwithformat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];
//字元串指派 參數中隻可以寫一個字元串 和第一種很像
nsstring *str2 = [nsstring stringwithstring:@"我是字元串"];
//字元串轉換為utf-8格式 參數為char*類型
nsstring *str3 = [nsstring stringwithutf8string:"字元串轉換utf-8格式"];
//字元串合并
int i = 100;
char*c = "xuanyusong";
nsstring *temp = @"我是臨時字元串";
//在字元串temp的基礎繼續添加 int i 與 char* c 組成一個新的字元串
nsstring *str4 = [temp stringbyappendingformat:@"整型: %d 字元型 :%s",i,c];
//在字元串temp的基礎繼續添加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字元組成,字元串的周遊實際上就是将字元串中的每一個字元提取出來。
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 比對字元串的尾巴
nsstring *str0 = @"justcoding";
nsstring *str1 = @"justcoding";
//字元串完全相等比較
if([str0 isequaltostring:str1])
nslog(@"字元串完全相等");
//字元串以開頭比較
if([str0 hasprefix:@"just"])
nslog(@"字元串str0以just開頭");
//字元串以結尾比較
if([str1 hassuffix:@"coding"])
nslog(@"str1字元串以coding結尾");
//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 *astring02 = @"this is a string!";
bool result = [astring01 compare:astring02] = = nsorderedsame;
nslog(@"result:%d",result);
//nsorderedsame 判斷兩者内容是否相同
bool result = [astring01 compare:astring02] = = nsorderedascending;
//nsorderedascending 判斷兩對象值的大小(按字母順序進行比較,astring02大于astring01為真)
bool result = [astring01 compare:astring02] = = nsordereddescending;
//nsordereddescending 判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為真)
//不考慮大 小寫比較字元串1
bool result = [astring01 caseinsensitivecompare:astring02] = = nsorderedsame;
//nsordereddescending判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為 真)
//不考慮大小寫比較字元串2
bool result = [astring01 compare:astring02 options:nscaseinsensitivesearch | nsnumericsearch] = = nsorderedsame;
//nscaseinsensitivesearch:不區分大小寫比較 nsliteralsearch:進行完全比較,區分大小寫 nsnumericsearch:比較字元串的字元個數,而不是字元值。
判斷的方法可以利用 nsstring 類别中 caseinsensitivecompare: 所回傳 -1、0 或是 1 的數值,判定兩個字串之間得排序關系,其程式瑪如下。
nsstring *string = @"0";
nscomparisonresult result = [string caseinsensitivecompare:@"a"];
switch (result) {
case nsorderedascending:
nslog(@"升幂");
break;
case nsorderedsame:
nslog(@"忽略大小寫相同的字串");
case nsordereddescending:
nslog(@"降幂");
default:
nslog(@"無法判定");
4. 檔案字元串操作(讀寫)
//從檔案讀取字元串:initwithcontentsoffile方法
nsstring *path = @"astring.text";
nsstring *astring = [[nsstring alloc] initwithcontentsoffile:path];
nslog(@"astring:%@",astring);
[astring release]; //astring=nil;
//寫字元串到檔案:writetofile方法
nsstring *astring = [[nsstring alloc] initwithstring:@"this is a string!"];
nsstring *path = @"astring.text";
[astring writetofile: path atomically: yes];
[astring release]; //astring=nil;
//擴充路徑
nsstring *path = @"~/nsdata.txt";
nsstring *absolutepath = [path stringbyexpandingtildeinpath];
nslog(@"absolutepath:%@",absolutepath);
nslog(@"path:%@",[absolutepath stringbyabbreviatingwithtildeinpath]);
//檔案擴充名
nslog(@"extension:%@",[path pathextension]);
5. 字元串的截取和大小寫
//改變字元串的大小寫
nsstring *string1 = @"a string";
nsstring *string2 = @"string";
nslog(@"string1:%@",[string1 uppercasestring]);//大寫
nslog(@"string2:%@",[string2 lowercasestring]);//小寫
nslog(@"string2:%@",[string2 capitalizedstring]);//首字母大小
java代碼
nsstring *str0 = @"中文my name is xuanyusong";
//截取字元串起始點到index為4之間的内容
nsstring * to = [str0 substringtoindex:4];
nslog(@"to = %@",to);
//截取字元index為2 到結尾之間的内容
nsstring * from = [str0 substringfromindex:2];
nslog(@"from = %@",from);
//設定截取字元串的範圍
//從第二位開始,長度為十
nsrange rang = nsmakerange(2, 10);
nsstring * strrang = [str0 substringwithrange:rang];
nslog(@"rang = %@",strrang);
//設定字元串首字母大寫
nslog(@"str0首字母大寫:%@",[str0 capitalizedstring]);
//設定字元串全部内容為大寫
nslog(@"str0大寫:%@",[str0 uppercasestring]);
//設定字元全部内容為小寫
nslog(@"str0小寫:%@",[str0 lowercasestring]);
6.搜尋字元串與替換字元串
nsstring *temp = @"is";
nsrange rang = [str0 rangeofstring:temp];
nslog(@"搜尋的字元串在str0中起始點的index 為 %d", rang.location);
nslog(@"搜尋的字元串在str0中結束點的index 為 %d", rang.location + rang.length);
//将搜尋中的字元串替換成為一個新的字元串
nsstring *str = [str0 stringbyreplacingcharactersinrange:rang withstring:@"哇咔咔卡卡咔"];
nslog(@"替換後字元串為%@", str);
//将字元串中" " 全部替換成 *
str = [str0 stringbyreplacingoccurrencesofstring :@" " withstring:@"@"];
拓展:使用下面這個方法整體替換字元串還可以設定替換的區域。
stringbyreplacingoccurrencesofstring:(nsstring *)withstring:(nsstring *) options:(nsstringcompareoptions) range:(nsrange)
7.字元串尾部添加
使用alloc在記憶體中建立字元串對象後邊可以動态的操作這個字元串,修改與添加等。
appendstring 方法:向字元串尾部添加一個字元串。
appendformat方法:向字元串尾部添加多個類型的字元串,可以添加任意數量與類型的字元串。
nsmutablestring * str = [[nsmutablestring alloc] init];
//添加普通的字元串
[str appendstring:@"aaa"];
//添加字元串 整型 字元型
[str appendformat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];
nslog(@"str = %@",str);
8. 字元串中删除元素
stringwithstring 方法:用于建立字元串初始化指派
rangeofstring方法:傳入字元串傳回一個在該字元串中的範圍 也可以寫 nsmakerange(0, 3) 意思是範圍在字元串0位到第3位
deletecharactersinrange:删除字元串 參數為range 就是删除的範圍。
//建立字元串
nsmutablestring *str = [nsmutablestring stringwithstring:@"justcoding is best!"];
//删除字元串中含"justcoding"的字元
[str deletecharactersinrange: [str rangeofstring: @"justcoding"]];
9. 字元串插入
insertstring方法:第一個參數 插入的字元串對象, 第二個參數 插入的位置。
nsmutablestring *str = [nsmutablestring stringwithstring:@"justcoding is"];
//在str第10位插入字元串
[str insertstring:@"best man" atindex:10];
10. 字元串拷貝
nsmutablestring *str1 = [nsmutablestring stringwithstring: @"字元串1"];
nsmutablestring *str2;
//字元串指派
str2 = str1;
[str2 appendstring: @" 和字元串2"];
nslog (@"str1 = %@", str1);
nslog (@"str2 = %@", str2);
為什麼給str2添加資料後 str1的資料也改變了?這就是指針的魅力所在,因為我們操作的是指針,str2 = str1 意思是兩個指針同時指向一塊記憶體,那麼str2指向的記憶體内容改變以後str1當然跟着改變了。
11. 字元串與指定類型轉換
如果轉換的參數非法的話不會抛出異常,好比用中文去轉整型。不會報錯 但是轉換結果為 0 ,預設值。
//字元串轉整型
nsstring *str0 = @"1121";
//nsstring *str0 = @"中國";
//把字元串強轉成整型
int i = [str0 intvalue];
nslog (@"轉換後:%i", i);
//字元串轉interger
nsstring *str1 = @"1985";
// nsstring *str1 = @"中國";
//把字元串強轉成interger
nsinteger ii = [str1 integervalue];
nslog (@"轉換後:%i", ii);
//字元串轉double
nsstring *str2 = @"3.145926";
//nsstring *str2 = @"中國";
//把字元串強轉成double
double d = [str2 doublevalue];
nslog (@"轉換後:%f", d);
//字元串轉float
nsstring *str3 = @"3.145926";
//nsstring *str3 = @"中國";
//把字元串強轉成float
double f = [str3 floatvalue];
nslog (@"轉換後:%f", f);
nsstring 常用方法總結
+(id)stringwithcontentsoffile:path encoding:enc err
建立一個新字元串并将其設定為 path 指定檔案的内容,使用字元編碼 enc,在err 上傳回錯誤
+(id)stringwithcontentsofurl:url encoding:enc err
建立一個新字元串并将其設定為 url 所指向的内容,使用字元編碼 enc,在err 上傳回錯誤
+(id)string
建立一個新的空字元串
+(id)stringwithstring:nsstring
建立一個新字元串,将其内容設定為 nsstring 内容
-(id)initwithstring:nsstring
将字元串内容設定為 nsstring 内容
-(id)initwithcontentsoffile:path encoding:enc error:err
将字元串設定為 path 指定檔案的内容,使用字元編碼 enc,在err 上傳回錯誤
-(id)initwithcontentsofurl:url encoding:enc error:err
将字元串設定為 url 所指向的内容,使用字元編碼 enc,在err 上傳回錯誤
-(unsigned int)length
傳回字元串中字元數目
-(unichar)characteratindex:i
傳回索引i 所在unicode 字元
-(nsstring*)substringfromindex:i
傳回從索引 i 開始到結尾的子字元串
-(nsstring*)substringwithrange:range
根據指定範圍傳回子字元串
-(nsstring*)substringtoindex:i
傳回從字元串開始到 索引 i 的子字元串
-(nscomparator*)caseinsensitivecompare:nsstring
比較兩個字元串大小,忽略大小寫
-(nscomparator*)compare:nsstring
比較兩個字元串大小
-(bool)hasprefix:nsstring
測試字元串是否以 nsstring 開始
-(bool)hassuffix:nsstring
測試字元串是否以 nsstring 結尾
-(bool)isequaltostring:nsstring
測試兩個字元串是否相等
-(nsstring*)capitalizedstring
傳回字元串,串中的每個單詞的首字母大寫,其餘字母小寫
-(nsstring*)lowercasestring
傳回轉換為小寫的字元串
-(nsstring*)uppercasestring
傳回轉換為大寫的字元串
-(const char*)utf8string
傳回utf8編碼格式的字元串
-(double)doublevalue
傳回轉換為double 類型的字元串
-(float)floatvalue
傳回轉換為 float 類型的字元串
-(nsinteger)integervalue
傳回轉換為 nsinteger 類型的新字元串
-(int)intvalue
傳回轉換為 int 的字元串
nsmutablestring 可修改字元串常用方法
+(id)stringwithcapacity:size
建立一個字元串,容量為size大小
-(id)initwithcapacity:size
初始化一個字元串,容量為size
-(void)setstring:nsstring
将字元串設定為 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
根據選項 opts ,使用指定 range 中的nsstring2 替換所有的 nsstring
轉自:http://blog.csdn.net/qq_31810357