生活随笔
收集整理的這篇文章主要介紹了
OC中的基本容器和基本数据类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本數據類型
NSRange
是一個結構體,里面有兩個數據成員數據類型都為NSUInteger 就是c語言中的無符號整形,一個是location表示集合的起始地址,另外一個變量是length表示從起始地址開始算多少個元素。
NSRange的三種創建方式
NSRange range
; range
. length
= 10 ; range
. location
= 3 ; NSRange rang1
= { 1 , 2 } ; NSRange rang2
= NSMakeRange ( 1 , 7 ) ;
NSRange的一些方法
將NSRange轉化為NSString類型
NSString
* 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實例的創建有很多種方式
直接賦值一個字符串,此時字符串為常量字符串 分配空間再進行初始化,此時還沒有賦值默認為nil,需要對其進行賦值操作 分配空間時進行有參數的構造 用c語言格式字符串對NSString進行初始化 帶有格式化參數對NSString進行賦值操作
NSString
* str1
= @"A String" ; NSString
* str2
= [ [ NSString alloc
] init
] ; str2
= @"A String" ; NSString
* str3
= [ [ NSString alloc
] initWithString
: @"A string" ] ; 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,其余都基本一樣
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
; [ str1 writeToFile
: path atomically
: YES encoding
: NSUTF8StringEncoding error
: & error
] ; if ( error
) { NSLog ( @"寫入失敗 %@" , [ error localizedDescription
] ) ; } else { NSLog ( @"寫入成功" ) ; }
}
NSString中的一些實例方法
大小寫處理
uppercaseString lowercaseString capitalizedString
void stringCreate4 ( ) { NSString
* str
= @"GuangDong" ; NSLog ( @"大寫 : %@" , [ str uppercaseString
] ) ; NSLog ( @"小寫 : %@" , [ str lowercaseString
] ) ; NSLog ( @"is %@" , [ str capitalizedString
] ) ;
}
字符串比較
isEqualToString 比較字符串內容是否相等,不忽略大小寫 按字典順序比較字符串compare,不忽略大小寫 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 ( @"左邊比右邊大" ) ; }
}
字符串搜索
hasPrefix 判斷字符串是否以某個前綴開頭 hasSuffix判斷字符串是否以某個后綴結尾 rangOfString查找字符串
NSString
* p
= @"123455.3333xddd" ; NSLog ( @"p is %i" , [ p hasPrefix
: @"12" ] ) ; NSLog ( @"p is %i" , [ p hasSuffix
: @"ddd" ] ) ; 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
] ;
字符串的截取
substringFromIndex從索引位置截取到末尾 substringToIndex 從開始位置截取到索引位置之前 componentsSeparatedByString切割字符串
void stringCreate7 ( ) { NSString
* str
= @"123456" ; 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
: @"," ] ; NSLog ( @"%@" , array
) ;
}
NSString與路徑
pathWithComponents 將數組中的元素拼接成一個路徑 把一個路徑分解成數組 pathComponents isAbsolutePath判斷是否為絕對路徑 lastPathComponent返回最后一個文件夾的名稱 stringByDeletingLastPathComponent刪除最后一個文件夾 stringByAppendingPathComponent最后拼接一個目錄
void stringCreate8 ( ) { 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" ; NSLog ( @"%i" , [ path isAbsolutePath
] ) ; NSLog ( @"最后一個文件夾名%@" , [ path lastPathComponent
] ) ; NSLog ( @"%@" , [ path stringByDeletingLastPathComponent
] ) ; NSLog ( @"%@" , [ path stringByAppendingPathComponent
: @"abc" ] ) ; }
與拓展名相關
pathExtension 獲取拓展名 stringByDeletingPathExtension 刪除拓展名 stringByAppendingPathExtension 拼接拓展名
void stringCreate9 ( )
{ NSString
* str
= @"/User/M3/test.txt" ; NSLog ( @"拓展名:%@" , [ str pathExtension
] ) ; NSLog ( @"%@" , [ str stringByDeletingPathExtension
] ) ; NSLog ( @"%@" , [ @"abc" stringByAppendingPathExtension
: @"mp3" ] ) ;
}
與基礎數據類型有關
intValue將字符串轉為整數 length統計字符串的個數 取出對應索引位置的字符characterAtIndex UTF8String 將NSString轉為c語言中char
void stringCreate10 ( ) { NSString
* str
= @"100" ; int a
= [ str intValue
] ; NSLog ( @"%i" , a
) ; NSLog ( @"length = %zi" , [ @"我是字符串123" length
] ) ; unichar c
= [ @"abc" characterAtIndex
: 0 ] ; NSLog ( @"%c" , c
) ; char * s
= [ @"abc" UTF8String
] ; NSLog ( @"%s" , s
) ;
}
NSMutableString
OS中的可變字符串類型,NSMutableString是NSString的子類,所以NSString的方法,NSMutableString都可以用
NSMutableString的實例化
動態方法 initWithcapacity:空間大小 靜態方法 stringWithCapacity
NSMutableString
* str
= [ [ NSMutableString alloc
] initWithCapacity
: 10 ] ; NSMutableString
* str2
= [ NSMutableString stringWithCapacity
: 10 ] ;
NSMutableString的一些實例化方法
appendString拼接一個字符串 appendFormat拼接一個格式化的字符串 replaceCharactersInRange替換字符串 insertString插入字符串 deleteCharactersInRange刪除字符串
[ str appendString
: @"567" ] ; [ str appendFormat
: @"age is %i and height is %.2f " , 27 , 1.55 ] ; NSRange range
= [ str rangeOfString
: @"age" ] ; [ str replaceCharactersInRange
: range withString
: @"no" ] ; [ str insertString
: @"abc" atIndex
: 2 ] ; NSLog ( @"%@" , str
) ; range
= [ str rangeOfString
: @"abc" ] ; [ str deleteCharactersInRange
: range
] ;
總結
以上是生活随笔 為你收集整理的OC中的基本容器和基本数据类型 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。