OC不可變字串和可變字串(1)
在OC中,字串有:不可變字串(NSString)、可變字串(NSMutableString)。
可變字串的方法繼承於不可變字串。
可變字串
1.初始化一個字串物件(除以下方法外,還可以使用alloc init來初始化字串)
NSString *string1 = @"Gene";
//stringWithFormat可用於字串的順序拼接
NSString *string2 = [NSString stringWithFormat:@"%@ %@ %@",@"1",@"2",string1];
2.使用NSString的類方法來建立字串
2.1從資料夾中獲取字串
//先建立一個檔案路徑path1
NSString *path1 = @"/Users/Gene/Desktop/hello.html";
//引數一輸入檔案路徑 encoding是編碼(此處直接輸入國家編號)error 當無法通過路徑名搜尋到檔案時,進行報錯。
NSString *string5 = [NSString stringWithContentsOfFile:path1 encoding:NSUTF8String Encoding error:nil];
輸出結果:
2.2從網頁獲取字串
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSString *string6 = [NSString stringWithContentsOfURL:url encoding:4 error:&error];
2.3字串的操作
2.3.1擷取字串
//建立一個字元竄
NSString *string7 = @"life is simple,You make choices and don't look back";
//獲取字串的長度
NSUInteger length = string7.length;
//substringToIndex,從擷取位置為0-4的字元,但不包括5
NSString *subString1 = [string7 substringToIndex:5 ];
//擷取字串中從7(from)的位置到結尾的字串,包括from的位置
NSString *subString2 = [string7 substringFromIndex:7];
//擷取從位置3開始,長度為6的字元竄
NSString *subString3 = [string7 substringWithRange:NSMakeRange(3, 6)];
/*------------------------*/
//獲取字串中的某個字元
NSString *string8 = @"abcdefg";
//根據字串中的位置index來獲得一個字元,注意:字串的索引是從 0 開始
char c =[string8 characterAtIndex:7];
2.3.2字串的比較
比較兩個字串,判斷這兩個字串是否相等
ex:subString2 == subString3。其中,使用“==”判斷時,需要等號兩邊的字串的內容以及指標都相同。
通過淺拷貝,可以得出一個指標相同且內容相同的另一個字串:
NSString *subString4 = [NSString stringWithString:subString2];
相對的,通過深拷貝,則可以得出一個只是內容相同,指標都不相同的字串:
NSString *subString5 = [NSString stringWithFormat:subString2];
淺拷貝中,兩個字串是會互相影響的。而深拷貝相當於重新克隆出一個字串,其指標發生了改變,而內容來源於上一個字串,且相互不影響。
比較兩個字串(在實際開發中,通常只需要比較兩個字串的內容是否相等):
if ([subString2 isEqualToString:string4]) {
NSLog(@"subString2 與 subString4 內容相等");
}
else{
NSLog(@"subString2 與 subString4 內容不相等");
}
比較兩個字串的大小,注意是大小
//建立兩個字串
NSString *cmpString1 = @"hehehe";
NSString *cmpString2 = @"haha";
//compare,比較字串1和字串2,返回的是列舉型別
NSComparisonResult result = [cmpString1 compare:cmpString2];
switch (result) {
case NSOrderedAscending:{
NSLog(@"cmpString1 < cmpString2 ,升序");
break;
}
case NSOrderedSame:{
NSLog(@"cmpString = cmpString 相同");
break;
}
case NSOrderedDescending:{
NSLog(@"cmpString1 > cmpString2 ,降序");
break;
}
default:
break;
}
2.3.3根據字串拿到對應的range(location,length)
NSRange range = [string7 rangeOfString:@"simple"];
輸出結果:
如果被搜尋字元竄在該字元竄中有多個,那麼,只輸出第一個遇到該字元竄的位置以及該字串的長度。
2.3.4判斷字串中是否有xx字首 或者 xx字尾
//判斷字首
NSString *string12 = @"http://www.baidu.com";
if ([string12 hasPrefix:@"http://"]) {
NSLog(@"含有此字首");
}
else{
NSLog(@"不含有此字首");
}
//判斷後綴
NSString *string13 = @"xxxxxx.jpg";
if ([string13 hasSuffix:@"jpg"] || [string13 hasSuffix:@"png"]) {
NSLog(@"是圖片檔案");
}
else{
NSLog(@"不包含此後綴");
}
2.3.4字串的拼接
NSString *string14 = @"www.baidu.com";
//在字串前拼接
NSString *string15 = [@"http://" stringByAppendingString:string14];
NSLog(@"%@",string15);
NSString *string16 = @"http://static.bigstockphoto.com";
NSString *string17 = @"images/homepage/2016_popular_photo_categories.jpg";
//連線兩個字串,並且第二個字串是按一定格式傳進來的
NSString *string18 = [string16 stringByAppendingFormat:@"/%@",string17];
//如果要拼接的是資料夾,可以使用stringByAppendingPathComponent
NSString *string19 = [string16 stringByAppendingPathComponent:string17];
2.3.5字串的其他常用方法
//1.字串的轉換函式
NSString *str = @"111addd333";
//如果字串裡面有數字也有字母,會將字母之後的全部砍掉
int a1 = [str intValue];
NSLog(@"%d",a1);
//2.字串的大小寫轉換
NSString *str2 = @"aaaabbsssee";
//全部改成小寫
str2 = [str2 uppercaseString];
NSLog(@"%@",str2);
//全部改成大寫
str2 = [str2 lowercaseString];
NSLog(@"%@",str2);
//首字母大寫,其他小寫
str2 = [str2 capitalizedString];
NSLog(@"%@",str2);
//替換
str2 = [str2 stringByReplacingOccurrencesOfString:@"bb" withString:@"dd"];
NSLog(@"%@",str2);
//替換
str2 = [str2 stringByReplacingCharactersInRange:NSMakeRange(1, 2) withString:@"GGGGG"];
NSLog(@"%@",str2);
//以separator 為分隔符,將元字元竄內容進行分割,分割得到的結果放到一個數組裡面,作為返回值
NSString *str8 = @"aa-bb-cc-dd-ee";
NSArray *arry = [str8 componentsSeparatedByString:@"-"];
相關推薦
《UNIX環境高級編程》讀書筆記之系統數據文件和信息(1)
返回 -m 獲取 高級編程 記得 clas oid data- size 1.UNIX系統口令文件包括了下圖所看到的的各字段,這些字段包括在<pwd.h>中定義的passwd結構體中 POSIX定義了兩個獲取口令文件項的函數。在給出用戶登錄名或用戶ID後
第6章 靜態路由和動態路由(1)_靜態路由
align 將在 跟蹤 添加 測試 字母 ppp協議 必須 缺少 1. 路由——網絡層實現的功能 1.1 路由功能 (1)網絡層的功能:給傳輸層協議提供簡單靈活的、無連接的、盡最大努力交付的數據包服務。 (2)路由器為每一個數據包單獨地選擇轉發路徑,網絡層並不提供服務質量的
python入門學習-列表和元組(1)
索引 個人 .so .cn pytho 入門 main 範圍 mage 數據結構是通過某種方式(例如對元素進行編號)組織在一起的數據元素的集合。這些數據元素可以是數字或者字符,甚至可以是其他數據結構。 在python中,最基本的數據結構是序列(seque
C# 《四》表達式和運算符(1)
center key 操作 mes string src ring mage ons 1、表達式 1、將變量和字面值(在使用運算符時,它們都稱作操作數)與運算符組合起來就得到了表達式,它是計算的基本構件。 2、簡單的操作包括所有的基本數學操作,如加減乘除;還有專門用於處理布
表、棧和隊列(1)
移除 clas for循環 set 基本 棧和隊列 返回 異常 -m 目錄 1、抽象數據類型 2、表ADT 2.1、表的簡單數組實現 2.2、簡單鏈表 3、Java Collections API中的表 3.1、Collection接口 3.2、Iterator接口 3
Armv8-A虛擬化:效能和構架分析(1)
微信公眾號 mindshare思享 本文基於一篇國外大學研究arm虛擬化的論文(論文下載會稍後給出),探討armv8虛擬化技術,KVM,Xen實現和效能分析,與x86的比較。這個研究幫助了arm改進了虛擬化支援的構架,並在armv8.1中採用。 摘要 arm伺服器的流行,
flowable EngineConfiguration的作用和繼承關係(1)
EngineConfiguration 是flowable引擎的核心部件。 在 flowable 中,實現引擎配置的頂層類是 AbstractEngineConfiguration 這是一個抽象類。 一、作用 1、第一個作用是配置引擎使用的資料庫資訊。 protected
0016_光源和打光(1)
條光: 從側面打光 條光照射寬度最好大於檢測物體的寬度 條光的安裝高度會影響到條光的長度,高度越高,條光的長度越長。 環形光: 安裝高度越高,要求環形光的直徑越大 瞭解光源安裝距離,過濾掉某些角度光源:例如要求光源安裝尺寸高,就可以過濾掉大角度光源,選擇用小角
C++學習之迴圈和關係表示式(1)
在c語言中我這部分還算學習的挺好,所以這部分我只新增一些我不太懂的點: 1.通常,cout在顯示bool值之前將它們轉換為int,但是在前面使用cout.setf(ios:boolalpha)函式呼叫設定了一個標記,該標記命令cout顯示true和false,而不是1和0;
#C語言基礎知識歸納和例題分析(1)
## C語言基礎知識歸納和例題分析(1) 計算機程式和計算機語言 1.程式 就是一組計算機能識別和執行的指令 2.計算機語言經歷的幾個階段 機器語言(直接執行)→符號語言(又稱組合語言)→高階語言 3.高階語
MongoDB資料庫關係表示和設計:(1)巢狀文件和引用連結
使用資料的時候,一個數據項常常和另外的一個或多個數據項產生關係,比如一個“人”物件,有一個名字,可能有多個電話號碼,以及多個子女,等等。 在傳統的SQL資料庫中,關係被分為一個個表(table),在表中,每個資料項以主鍵(primary key)標識,而一個表的主鍵又
3D數學 ---- 矩陣和線性變換(1)
包含平移的線性變換稱作仿射變換,3D中的仿射變換不能用 3 x 3 矩陣表達,必須使用4 x 4矩陣。 一般來說,變換物體相當於以相反的量變換描述這個物體的座標系。當有多個變換時,則需要以相反的順序變換相反的量。例如,將物體順時針旋轉20度,擴大200%,等價於將座標系縮小2
BigData_A_A_03-YARN-資源管理和任務排程(1)
楔子 計算每個月溫度最高的2天 data 資料 code https://github.com/qianlicao51/hd/tree/master/src/main/java/cn/sxt/day1/hdfs/weather 比較時使用了 apa
圖形介面程式設計(六) 分組容器和卡片容器(1)
——本節介紹瞭如何使用分組容器(GroupBox)以及一個分組RadioButton的例項 1 分組容器 GroupBox容器使用起來就和一個基本的Panel容器一樣,它不具備佈局管理功能,僅僅是一個可以容納其它控制元件的容器。 Grou
基於TensorFlow的Cats vs. Dogs(貓狗大戰)實現和詳解(1)
2017.5.29 官方的MNIST例子裡面訓練資料的下載和匯入都是用已經寫好的指令碼完成的,至於裡面實現細節也沒高興去看原始碼,感覺寫得太正式,我這個初學者不好理解。於是在優酷上找到了KevinRush這麼一個播主,裡面的視訊教程講得挺清晰的,於是跟著視
Android系統載入Apk檔案的時機和流程分析(1)--Android 4.4.4 r1的原始碼
Android系統在啟動時安裝應用程式的過程,這些應用程式安裝好之後,還需要有一個Home應用程式來負責把它們在桌面上展示出來,在Android系統中,這個預設的Home應用程式就是Launcher了。Android系統的Home應用程式Launcher是由Activit
Linux學習和ROS安裝(1)
[email protected]:~$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
目標定位和檢測系列(1):一些基本概念
最近開始學習深度學習中的定位和檢測任務。本來打算直接看論文,卻發現文章中的的很多基本概念都搞不清楚,於是就自己先梳理了一些定位和檢測任務的基本概念。(內容主要來自斯坦福大學的CS231課程、吳恩達的deeplearning.ai卷積部分,這兩門課程都可以在網易雲
遊戲中的三角學——Sprite Kit 和 Swift 教程(1)
更新 2015/04/20:升級至 Xcode 6.3 和 Swift 1.2 更新說明:這是我們廣受歡迎的教程之一的第三個版本——第一個版本是 Cocos2D 的,由 Matthijs Hollemans 縮寫,第二個版本由 Tony Dahbura 升
重要的軟體測試度量和度量指標(1)——附帶例子和圖表
在軟體專案中,最重要的就是測量質量,成本, 專案和流程的有效性。如果沒有測量,專案不能算真正的完成。 這篇文章,我們將會結合例子和圖表—學習軟體測試度量和測量指標以及怎樣在軟體測試流程中使用它們。 這裡有一句名言:“我們無法測量我們不能控制的東西”。