OC中的基本容器和基本數據類型

基本數據類型

NSRange

是一個結構體,里面有兩個數據成員數據類型都為NSUInteger 就是c語言中的無符號整形,一個是location表示集合的起始地址,另外一個變量是length表示從起始地址開始算多少個元素。

NSRange的三種創建方式

	//1.NSRange range;range.length = 10;range.location=3;//2.NSRange rang1 = {1,2};//3.NSRange rang2 = NSMakeRange(1, 7);

NSRange的一些方法

將NSRange轉化為NSString類型

//快速打印rangeNSString *str = NSStringFromRange(range);NSLog(@"%@",str);

NSPoint

NSPoint其實就是CGPoint

NSPoint創建方式

跟NSRange一樣,也是三種方法

	NSPoint p;p.x = 10;p.y = 10;NSPoint p3 = {3,2};NSPoint p2 = NSMakePoint(2, 3);

NSPoint的一些方法

將NSPoint轉為NSString

NSString *str = NSStringFromPoint(p);NSLog(@"%@",str);

NSSize

本質就是CGSize,NSSize就是一個結構體,兩個成員高度height,寬度width

NSSize的使用

void size(){NSSize size;size.width = 100;size.height = 90;size = NSMakeSize(3, 4);NSString *str = NSStringFromSize(size);NSLog(@"%@",str);
}

NSRect

NSRect是一個結構體,這個結構體兩個成員一個是NSPoint另外一個是NSSize;

NSRect的使用

    NSRect rect;rect.origin.x = 10;rect.origin.y = 20;rect.origin = NSMakePoint(10, 33);rect.size = NSMakeSize(12, 30);rect = NSMakeRect(10, 20, 30, 40);NSLog(@"%@",NSStringFromRect(rect));

基本容器

NSString

與C++中String類的功能很像,NSString是OC中存儲字符串類型的一種容器,但是NSString內容是不可變的

NSString 的實例的創建

動態方法創建

NSSting實例的創建有很多種方式

  1. 直接賦值一個字符串,此時字符串為常量字符串
  2. 分配空間再進行初始化,此時還沒有賦值默認為nil,需要對其進行賦值操作
  3. 分配空間時進行有參數的構造
  4. 用c語言格式字符串對NSString進行初始化
  5. 帶有格式化參數對NSString進行賦值操作
//這中方式創建是常量字符串NSString *str1 = @"A String";//先分配空間再進行初始化NSString *str2 = [[NSString alloc] init];str2 = @"A String";//分配空間后進行帶有參數的構造NSString *str3 = [[NSString alloc] initWithString:@"A string"];//分配空間后將char類型的的字符串轉為NSString類型進行構造NSString *str4 = [[NSString alloc] initWithUTF8String:"A string"];str4 = [NSString stringWithUTF8String:"LOUE"];//帶有格式化參數的初始化NSString * str5 = [[NSString alloc] initWithFormat:@"my age is %i and my height is %.2f ",19,1.22]; NSLog(@"str5 = %@",str5);

靜態方法創建

除了用動態方法可以創建字符串實例外,動態方法也可以創建字符串實例。
基本就是將init替換成string,其余都基本一樣

//string with開頭為靜態方法,作用與相應的initWith開頭的動態方法一樣
str3 = [NSString stringWithString:@"LOUE"];

文件操作

讀取文件內容

指定字符集為UTF-8

 //從文件中讀取文本NSString *path = @"/Users/bytedance/Desktop/1.txt";NSString *str1 = [NSString stringWithContentsOfFile: path encoding:NSUTF8StringEncoding error:nil];NSLog(@"str1 = %@",str1);

如果想要指定字符集為GBK的話,需要進行類型的轉化

寫入文件內容

//將字符串導出到文件
void stringCreate3(){NSString *str1 = @"啦啦啦啦啦啦啦";NSString *path = @"/Users/bytedance/Desktp/1.txt";NSError *error;//第二參數如果是yes,則先創建一個臨時文件將數據寫入臨時文件,如果中途出錯,則不寫入目標文件//如果文件不存在則會幫忙創建//如果文件夾布村則會報錯//覆蓋掉原來文件內容[str1 writeToFile: path atomically:YES encoding:NSUTF8StringEncoding error:&error];if(error){//寫入失敗NSLog(@"寫入失敗 %@" ,[error localizedDescription]);}else {NSLog(@"寫入成功");}
}

NSString中的一些實例方法

大小寫處理

  1. uppercaseString
  2. lowercaseString
  3. capitalizedString
void stringCreate4(){NSString *str = @"GuangDong";//轉成大寫NSLog(@"大寫 : %@",[str uppercaseString]);//轉成小寫NSLog(@"小寫 : %@",[str lowercaseString]);//首字母變大寫,其他字母變小寫NSLog(@"is %@",[str capitalizedString]);
}

字符串比較

  1. isEqualToString 比較字符串內容是否相等,不忽略大小寫
  2. 按字典順序比較字符串compare,不忽略大小寫
  3. caseInsensitiveCompare,忽略大小寫
void stringCreate5(){//字符串比較//檢測字符串內容是否相同BOOL res = [@"abc" isEqualToString:@"ABc"];NSLog(@"%i",res);//右邊比左邊大為升序//左邊比右邊大為降序//一樣大為相等//按字典序比較字符串大小//返回值為枚舉類型NSComparisonResult res1 = [@"abc"compare:@"Abc"];if(res1 == NSOrderedSame){NSLog(@"一樣大");}else if(res1 == NSOrderedAscending){NSLog(@"右邊比左邊大");}else {NSLog(@"左邊比右邊大");}//忽略大小寫進行比較NSComparisonResult res2 = [@"abc" caseInsensitiveCompare:@"ABc"];if(res2 == NSOrderedSame){NSLog(@"一樣大");}else if(res2 == NSOrderedAscending){NSLog(@"右邊比左邊大");}else {NSLog(@"左邊比右邊大");}
}

字符串搜索

  1. hasPrefix 判斷字符串是否以某個前綴開頭
  2. hasSuffix判斷字符串是否以某個后綴結尾
  3. rangOfString查找字符串
	NSString *p = @"123455.3333xddd";//判斷字符串是否以某個前綴開頭NSLog(@"p is %i",[p hasPrefix:@"12"]);//判斷字符串是否以某個后綴結尾NSLog(@"p is %i",[p hasSuffix:@"ddd"]);//查找字符串中是否包含某個字符串//找到返回在p中的起始位置,和長度是以結構體的形式返回,需要轉換為字符串進行輸出//如果不存在長度返回的是0,起始位置是一個long類型的最大值NSRange range = [p rangeOfString:@"345"];if(range.location == NSNotFound || range.length == 0){NSLog(@"找不到");}else{NSLog(@"找到");}//反向搜索NSRange range1 = [p rangeOfString:@"455" options:NSBackwardsSearch];if(range1.location == NSNotFound ){NSLog(@"找不到");}else{NSLog(@"找到");}//指定范圍搜索NSRange s;s.location = 8;s.length =4;NSRange range2 = [p rangeOfString:@"455" options:NSBackwardsSearch range:s];

字符串的截取

  1. substringFromIndex從索引位置截取到末尾
  2. substringToIndex 從開始位置截取到索引位置之前
  3. componentsSeparatedByString切割字符串
void stringCreate7(){NSString *str = @"123456";//從索引3開始截取到尾部NSLog(@"%@",[str substringFromIndex:3]);//從頭部開始截取到某個索引位置,不包括索引NSLog(@"%@",[str substringToIndex:4]);//截取范圍內的字符串NSRange s;s.location =2;s.length = 3;NSLog(@"%@",[str substringWithRange:s]);//切割字符串NSString *str2 = @"1,2,3,4,5";//以,進行分割NSArray *array = [str2 componentsSeparatedByString:@","];//%@默認調用對象的decribtion方法打印對象中的所有元素NSLog(@"%@",array);
}

NSString與路徑

  1. pathWithComponents 將數組中的元素拼接成一個路徑
  2. 把一個路徑分解成數組 pathComponents
  3. isAbsolutePath判斷是否為絕對路徑
  4. lastPathComponent返回最后一個文件夾的名稱
  5. stringByDeletingLastPathComponent刪除最后一個文件夾
  6. stringByAppendingPathComponent最后拼接一個目錄
void stringCreate8(){//與路徑相關的API//快速創建一個自動釋放的數組NSMutableArray* compoments = [NSMutableArray array];[compoments addObject:@"ABC"];[compoments addObject:@"Deecc"];[compoments addObject:@"Kooo"];NSString *path =  [NSString pathWithComponents:compoments];NSLog(@"%@",path);//把一個路徑分解成數組NSArray * array = [path pathComponents];NSLog(@"%@",array);//判斷是否為絕對路徑path = @"users/mj/test";//path的值一直沒有變,改變的都是返回值NSLog(@"%i",[path isAbsolutePath]);//返回最后一個文件夾名NSLog(@"最后一個文件夾名%@",[path lastPathComponent]);//刪除最后一個文件夾NSLog(@"%@",[path stringByDeletingLastPathComponent]);//最后拼接一個目錄NSLog(@"%@",[path stringByAppendingPathComponent:@"abc"]);}

與拓展名相關

  1. pathExtension 獲取拓展名
  2. stringByDeletingPathExtension 刪除拓展名
  3. stringByAppendingPathExtension 拼接拓展名
void stringCreate9()
{//刪除拓展名NSString *str = @"/User/M3/test.txt";NSLog(@"拓展名:%@",[str pathExtension]);NSLog(@"%@",[str stringByDeletingPathExtension]);//拼接拓展名NSLog(@"%@",[@"abc" stringByAppendingPathExtension:@"mp3"]);
}

與基礎數據類型有關

  1. intValue將字符串轉為整數
  2. length統計字符串的個數
  3. 取出對應索引位置的字符characterAtIndex
  4. UTF8String 將NSString轉為c語言中char
void stringCreate10(){NSString *str = @"100";int a = [str intValue];NSLog(@"%i",a);//計算字數并不是字符數,一個中文占兩個字符但只計為1NSLog(@"length = %zi",[@"我是字符串123"length]);// 取出對應索引位置的字符unichar c = [@"abc" characterAtIndex:0];NSLog(@"%c",c);//轉劃為c語言中的charchar *s = [@"abc" UTF8String];NSLog(@"%s",s);
}

NSMutableString

OS中的可變字符串類型,NSMutableString是NSString的子類,所以NSString的方法,NSMutableString都可以用

NSMutableString的實例化

  1. 動態方法 initWithcapacity:空間大小
  2. 靜態方法 stringWithCapacity
//預先分配10個字符的存儲空間NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];NSMutableString *str2 = [NSMutableString stringWithCapacity:10];

NSMutableString的一些實例化方法

  1. appendString拼接一個字符串
  2. appendFormat拼接一個格式化的字符串
  3. replaceCharactersInRange替換字符串
  4. insertString插入字符串
  5. deleteCharactersInRange刪除字符串
	//拼接一個字符串[str appendString:@"567"];[str appendFormat:@"age is %i and height is %.2f ",27,1.55];//替換字符串//查到age的范圍NSRange range = [str rangeOfString:@"age"];[str replaceCharactersInRange:range withString:@"no"];//插入字符串[str insertString:@"abc" atIndex:2];NSLog(@"%@",str);//刪除字符串range = [str rangeOfString:@"abc"];[str deleteCharactersInRange:range];

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383040.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383040.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383040.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python程序開發總結_python開發總結

兩本不錯的書:《Python參考手冊》:對Python各個標準模塊,特性介紹的比較詳細。《Python核心編程》:介紹的比較深入,關鍵是,對Python很多高級特性都有介紹。一個開源代碼:openstack,關…

Centos7通過yum安裝jsoncpp庫

拒絕下載軟件包 一堆網上下載安裝包,為了編譯暗轉包又下載插件,是真麻煩 看看有沒有jsoncpp的相關庫 $ yum list | grep jsoncpp-devel然后執行這兩句,就完了 yum install jsoncpp.x86_64 yum install jsoncpp.devel.x86-64多簡單

作為唯一索引_Mysql什么情況下不走索引?

本文基于Mysql5.7版本和InnoDB存儲引擎。1、InnoDB索引組織表在InnoDB引擎中,表都是按照主鍵順序組織存放的,這種存放方式的表稱為索引組織表。InnoDB存儲引擎中的表,都有主鍵,如果沒有顯式聲明主鍵,則采取以下措施&am…

python捕獲全局異常統一管理_python中如何用sys.excepthook來對全局異常進行捕獲、顯示及輸出到error日志中...

使用sys.excepthook函數進行全局異常的獲取。1. 使用MessageDialog實現異常顯示;2. 使用logger把捕獲的異常信息輸出到日志中;步驟:定義異常處理函數, 并使用該函來替換掉系統的內置處理函數;對于threading.py的異常捕…

r語言系統計算上是奇異的_R語言實現并行計算

Python作為多線程的編程語言在并行方面相對于R語言有很大的優勢,然而作為占據統計分析一席之地的R語言自然不能沒有并行計算的助力。那么我們來看下在R語言中有哪些并行的包:隱式并行:OpenBLAS,Intel MKL,NVIDIA cuBLA…

cansina 目錄_dirmap - 一個高級web目錄、文件掃描工具-華盟網

Dirmap一個高級web目錄掃描工具,功能將會強于DirBuster、Dirsearch、cansina、御劍需求分析經過大量調研,總結一個優秀的web目錄掃描工具至少具備以下功能:并發引擎能使用字典能純爆破能爬取頁面動態生成字典能fuzz掃描自定義請求自定義響應結…

唯有自己變得強大_物競天擇,適者生存,唯有強大自己,方能百毒不侵

物競天擇,適者生存,這是亙古不變的道理。面對生活中的困難,人生路上的挫折,我們只有足夠堅強,足夠勇敢,足夠強大,才能戰勝這一切。人活著要明白,你所有的負面,都源于你的…

樹莓派c語言運行_樹莓派完成簡單的編程(四)

在上一篇文章中,我們學習了Vi文本編輯器,那么用它可以實現什么功能呢?樹莓派python以及c語言編程這里我選擇了最簡單和很流行的兩種編程語言:C語言和Python。實現最簡單的功能,輸出hello world。Python編程簡介Python是…

mysql 讀寫引擎_揭秘MySQL存儲引擎spider

轉自:興趣部落?buluo.qq.com導讀: Spider是為MySQL/MariaDB開發的一個特殊引擎,具有內嵌分片功能。現在它已經被集成到MariaDB10.0及以上版本中,作為MariaDB的一個新的主要性。Spider的主要功能是將數據分散到多個后端節點&#…

python中的與或非_「Python基礎」 While 循環語句

Python 編程中 while 語句用于循環執行程序,即在某條件下,循環執行某段程序,以處理需要重復處理的相同任務。其基本形式為:while 判斷條件:執行語句……執行語句可以是單個語句或語句塊。判斷條件可以是任何表達式&…

lamp mysql大小限制_LAMP 調優之:MySQL 服務器調優

關于 MySQL 調優有 3 種方法可以加快 MySQL 服務器的運行速度,效率從低到高依次為:替換有問題的硬件。對 MySQL 進程的設置進行調優。對查詢進行優化。替換有問題的硬件通常是我們的第一考慮,主要原因是數據庫會占用大量資源。不過這種解決方…

go定時器 每天重復_Go語言學習基礎-定時器、計時器

Timer計時器如果希望在將來的某個時間點執行Go代碼,或者在某個時間間隔重復執行Go代碼,使用Go內置的timer和ticker功能。先看定時器timer,然后再看計時器ticker。定時器代表未來的單個事件。告訴定時器需要等待多長時間,它返回一個…

html類名定義規則_HTML入門筆記1

HTML 是誰發明的?Tim Berners-LeeHTML起手式&#xff1a;HTML起手式 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

mysql主從虛擬機_虛擬機centos7Mysql實現主從配置

環境搭建在虛擬機上和創建兩個一模一樣的centos7系統&#xff0c;并安裝相同版本的mysql(可以先創建一個再克隆)在master上操作登錄mysqlmysql -u root -p使用mysqluse mysql;創建用戶CREATE USER lystbc1% IDENTIFIED BY Lys135426tbc;給用戶授權GRANT REPLICATION SLAVE ON *…

怎樣檢測mysql5.5安裝成功_64位wiN7系統中裝配MySQL5.5.17(測試安裝成功哦!)

64位wiN7系統中安裝mysql5.5.17(測試安裝成功哦&#xff01;&#xff01;~~)下載地址&#xff1a;[url] http://www.mysql.com/downloads/mysql/[/url]下載的話需要登錄,你只需按照要求注冊一個賬號,然后下載即可.我下載的是mysql-5.5.17-winx64.msi版本.安裝步驟:Step 1. Mysq…

xcode 創建模擬器_Xcode編譯WebKit

下載WebKit源碼1)進入https://webkit.org/2)點擊頁面的 Get Started 進入新頁面&#xff0c;如下圖所示3)點擊 Getting the code 進入新頁面&#xff0c;如下圖所示4)在源碼下載頁面&#xff0c;有多種下載方式&#xff0c;包括直接下載代碼zip包&#xff0c;通過SVN下載&#…

mysql iscsi_iscsi共享存儲的簡單配置和應用

1、環境介紹SCSI(Small Computer System Interface)是塊數據傳輸協議&#xff0c;在存儲行業廣泛應用&#xff0c;是存儲設備最基本的標準協議。從根本上說&#xff0c;iSCSI協議是一種利用IP網絡來傳輸潛伏時間短的SCSI數據塊的方法&#xff0c;ISCSI使用以太網協議傳送SCSI命…

request mysql 接口_TP5接口開發

開啟debug調試模式(正式上線建議關閉)config.php// 應用調試模式app_debug > true,設置輸出類型index.phpnamespace app\index\controller;class Index{public function index(){$data [name > steven, age > 24];return json([code > 0, msg > 操作成功, data…

django和mysql寫注冊_Django電商項目---完成注冊頁面和用戶登錄

完成基本的創建項目、用戶注冊、登錄、注銷功能創建Django項目,創建df_user的App創建靜態文件夾static(跟manage.py保持在同一級別下)復制靜態文件(css images js)到static路徑下修改settings.py文件修改templates路徑修改數據庫新添加靜態文件加載路徑Pycharm連接mysql數據庫…

命令行進入指定目錄_VIM學習筆記 操作目錄(Manipulate Directory)

在目錄間移動使用以下命令&#xff0c;可以顯示當前所在的目錄&#xff1a;:pwd使用以下命令&#xff0c;在Linux下可以進入HOME目錄&#xff0c;而在Windows下則顯示當前所在目錄&#xff1a;:cd使用以下命令&#xff0c;可以進入指定的目錄&#xff1a;:cd D:tepm使用以下命令…