OC(二)字串、方法

weixin_34402408發表於2018-07-29

 /*有返回值的方法(給別人一個資料)//有引數函式跟別人要一個資料

 公式:

 - (返回值型別)方法名;

 實現:

 - (返回值型別)方法名

 {

return 返回值型別資料

 }

 呼叫:

 [物件名 方法名];//他就是具體資料

 --------------------------------------

 字串: NSString

#import 

#import "Phone.h"


int main(int argc, const char * argv[]) {

 @autoreleasepool {

 /*int a = 10;

        float b = 10.0;

        double c = 20.4;

        short d = 2;

        long int v = 33;

        char mm = 'a';*/

**//初始化的三種方法

NSString *string = @"我是好寶寶";        

//初始化一個空的字串

NSString *string = [NSString string];

NSString *string = [[NSString alloc]init];


**//處理字串

//1.把字串轉成大寫(字母)up轉大寫

 NSString *name = @"HuLuWa";

name = [name uppercaseString];

NSLog(@"%@",name);

//2.把字串轉成小寫  low轉小寫

name = [name lowercaseString];

//3.只讓首字母大寫 其他小寫

name = [name capitalizedString];


**//判斷字串是不是以什麼字元開頭

 BOOL 布林型別 只有YES NO兩種結果 它的預設值是NO

//第一種

 NSString *name = @"13027625586";

//字首 prefix

BOOL isRight = [name hasPrefix:@"130"] ;

if (isRight !=YES) {

NSLog(@"不是我的號碼");

}else{

NSLog(@"是我的號碼");

}

//第二種

NSString *telName = @"13311011901";      

if ([telName hasPrefix:@"135"]!=YES) {

NSLog(@"不是135開頭");

}else{

NSLog(@"是135開頭");

}

**//判斷字串是不是以什麼結束

//字尾 hasSuffix


//    NSRange:範圍 (包括起點位置和長度)

NSRange range;

range.location = 1;

range.length = 3;


NSString *string = @"揹著書包去放牛。";

//  NSNotFound 沒有找到


NSRange range = [string rangeOfString:@"書包"];

if (range.location != NSNotFound) {

NSLog(@"揹著書包") ;

}else{

NSLog(@"沒背書包");

}


**//判斷兩個字串是否相同

NSString *string1 = @"阿狸";

BOOL isEqual = [string1 isEqualToString:@"阿里"];

if (isEqual != YES) {

NSLog(@"不同");

}else{

NSLog(@"相同");

}


**//擷取字串

NSString *string = @"太陽光!金亮亮!雄雞唱三唱!";

//從開始擷取到哪裡

NSString *newstring = [string substringToIndex:3];

//從哪裡擷取到最後

NSString *newstring = [string substringFromIndex:3];

//從哪一個位置擷取到哪一個位置

NSRange range;

range.location = 4;

range.length = 3;


NSString *newstring = [string substringWithRange:range];



NSLog(@"%@",newstring);



#pragma -------字串拼接----------

NSString *string = @"12345";

//1.在string這個字串的基礎之上,拼接一段字串 ->生成一個新的字串 string無變化

NSString *newString = [string stringByAppendingString:@"上山打老虎"];

//在string後面拼接@“上山打老虎”

//字串拼接的順序就是字串內容的順序

NSLog(@"%@",newString);


NSString *string1 = @"金剛葫蘆娃";

//1.@"是"

//2.@"鋼鐵做的"

//3. int 500

//4.斤

//可以把任何格式的物件轉換成字串


NSString *s1 = @"是";

NSString *s2 = @"鋼鐵做的";

int num = 500;

NSString *s3 = @"斤";

//在一個字串的基礎之上,拼接一個格式化的字串,會生成一個新的字串

//2.格式化拼接字串方法

NSString *newString1 = string1 stringByAppendingFormat:@"%@%@%d%@",s1,s2,num,s3

//3.使用格式化字串 ->把其他格式的資料轉化成字串

float score = 90.5;

NSString *s = [NSString stringWithFormat:@"%0.1f",score];


#pragma ---------資料型別轉換-------------

 *****//把其他資料型別轉換成字串可以使用格式化字串的方法

//除了數字,字串轉成BOOL或者int... 都是0(no);❌錯誤想法

//如果是數字,就是對應的數字

//BOOL裡面只有yes(1)或者no(0)

BOOL is = [s boolValue];

int num = [s intValue];

NSLog(@"%d %d",is,num);

//判斷字串的長度  length

if (s.length == 0) {


}

*****//把其他資料型別轉換成任意資料型別

int a;

NSString *s = @"100";

a = [s intValue];//整型

NSLog(@"%d",a);


整形 intValue

float型 floatValue




#pragma ---可變字串NSMutableString-----

******************************************

//不可變字串長度固定 可變字串長度不固定

//NSMutableString是NSString的兒子

//之前學的NSString的方法 NSMutableString都可以使用,而且跟他一樣會生成一個新的字串。

但是NSMutableString的新功能增、刪、改不會產生新字元,而是在原有的基礎上顯示功能。

//可變字串才能用

//直接用@""編譯器會認為是一個有固定長度的字串-不可變字串

//***可變字串的初始化方法

NSMutableString *string = [NSMutableString string];

NSMutableString *string = [[NSMutableString alloc]initWithString:@"你好啊"];//初始化

/*

方法前面是減號的(-),表示是一個例項方法(物件方法);

物件方法用物件名 去呼叫方法

方法前面是加號(+),表示是一個類方法;

類方法用類名呼叫方法

**   OC允許把兩個方法一起呼叫;

*/

NSMutableString *string1 = [NSMutableString stringWithString:@"初始化可變字串的第二種方法"];

//思考 為什麼有可變字串和不可變字串❔❔❔❔❔❔❔❔

//目的:為了讓原有字串可以增刪改

#pragma ---------增、拼接字串----------

NSMutableString *content = [NSMutableStringstringWithString:@"直接格式化字串的方法"];

[content appendString:@"我是葫蘆娃"];

[content appendFormat:@"獨步闖天下"];

int a = 250;

[content appendFormat:@"獨步闖天下%d",a];


#pragma ---插入字串 可以隨意插入到指定位置----

[content insertString:@"內容" atIndex:2];


#pragma ---------刪除字串-------------

NSRange range = {0,2};

[content deleteCharactersInRange:range];


#pragma -----------改、替換-------------


NSRange range1 = {2,3};

[content replaceCharactersInRange:range1 withString:@"葫蘆娃"];

NSLog(@"%@",content);

--------------------------------------

.h檔案

#import 


@interface Phone : NSObject


{

//在這定義的變數是全域性變數

//全域性變數:相當於是程式裡面變數的中轉站

 NSString *_name;

}


//通過這個方法希望得到手機的名字

- (NSString *)name;

//通過這種方法給手機的物件起個名字

- (void)setName:(NSString *)name;

@end

--------------------------------------

.m檔案

#import "Phone.h"


//遇到的問題

//可以得到傳到類裡面的name name=@"小甜甜";

//- (NSString *)name 這個函式不能夠把使用者定義的@"小甜甜"傳出去

//目的:把傳進來的值和要傳出的值統一


//解決方法

//以前學過變數->全域性變數(整個檔案都可以使用)

//讓全域性變數接受傳進來的值

//現在全域性變數的值就是傳進來的值

//只需要讓- (NSString *)name 返回全域性變數的值


@implementation Phone

- (void)setName:(NSString *)name

{

 //把形參name賦給全域性變數_name

 _name = name;

 //    NSLog(@"%@",name);

}


- (NSString *)name

{

 return _name;

}

-------------------總結以上----------------------

字串


理解NSString(不可變字串)與NSMutableString(可變字串)的區別

// NSMutableString 可變字串

// NSString 不可變字串

// NSMutableString:它的值被修改之後還賦值給本身

#pragma mark ------------------NSString(不可變字串)----------------


#pragma mark 建立一個字串常量

NSString *string1 = [[NSString alloc]init]; //方法1 初始化操作

NSString *string2 = @"字串";// 方法 2

NSString *string3 = [NSString string];//方法3


#pragma mark 建立一個格式化的字串 堆區

int num =10;

// initWithFormat 格式化輸出資料

NSString *string4 = [[NSString alloc]initWithFormat:@"拉開還是電腦開機按手機開啟啦%d",num];

// 結果:拉開還是電腦開機按手機開啟啦10


#pragma mark 字串的比較

NSString *string5 = @"one";

NSString *string6 = @"two";

// isEqualToString 判斷是否一樣

if ([string5 isEqualToString:string6]) {

    NSLog(@"字串相同");

}

#pragma mark 字串的轉換

NSString *string7 = @"I love EAT";

// 因為string7是用不可變字串進行定義的,所以不會改變自身的值

NSString *stringChange = [string7 lowercaseString];//轉換成小寫

NSString *stringChange2 = [string7 uppercaseString];//轉換成大寫

NSString *stringChange3 = [stringChange capitalizedString];//首字母大寫


#pragma mark 字串的拼接與擷取

NSString *stringOne = @"abc";

        [stringOne stringByAppendingString:@"def"];


 int num = 120;

        [stringOne stringByAppendingFormat:@"%d",num];


 //擷取

NSString *string = @"abcde";

        NSString *stringOne = [string substringFromIndex:3];

        NSString *stringTwo = [stringOne substringToIndex:2];

        NSRange rang = {0,2};

        NSString *stringRang = [stringTwo substringWithRange:rang];


#pragma mark ---------NSMutableString(可變字串)------


//PS: 之前對NSString(不可變字串)做的所有操作我們們都是對整個字串做的處理,無法對單個字串進行增刪改查的操作。現在我們們使用NSMutableString(可變字串)進行增刪改查

#pragma mark 增


 NSMutableString *mutable = [[NSMutableString alloc]initWithString:@"你好啊"];//初始化


[mutable insertString:@",朋友" atIndex:3];


 //只要輸出物件,就用%@

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


 NSString *string = @"sdf";



#pragma mark 刪


 NSMutableString *string = [[NSMutableString alloc]initWithString:@"你好啊"];


 NSRange rang = {0,3};


[string deleteCharactersInRange:rang];


#pragma mark 改


 NSMutableString *string = [[NSMutableString alloc]initWithString:@"你好啊"];


 NSRange rang = {0,3};


[string replaceCharactersInRange:rang withString:@""];





#pragma mark 查


 NSMutableString *string = [[NSMutableString alloc]initWithString:@"你好啊"];



 NSRange range = [string rangeOfString:@"好"];


 if (range.location == NSNotFound) {



 NSLog(@"");

        }



    }

 return 0;

}

相關文章