NSString 使用方法

objective-c 中核心处理字符串的类是NSString 与 NSMutableString,这两个类最大的区别就是NSString创建赋值以后该字符串的内容与长度不能再动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。

//一、NSString   

 /*------------------------------创建字符串的方法--------------------------------*/

//1、创建字符串。

NSString *string =@"This is a String";

NSString 与 char*最大的区别就是NSString是一个objective对象,而char*是一个字节数组。@”字符串”这个符号为objective-c NSString字符串常量的标准用法,char*创建的时候无需添加@

//字符串格式化合并分别包括  //NSString*类型 int类型 char*类型 

    NSString *str1 = [NSString stringWithFormat:@"我的名字: %@ 我的年龄:%d我的邮箱:%s",@"岩松",25,"bokan@sohu.com"];

    //字符串赋值参数中只可以写一个字符串和第一种很像

   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(@"str1 = %@",str1);

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

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

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

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


//2、创建空字符串,给予赋值。

   NSString *string = [[NSString alloc]init];
    string = 
@"This is a String!";
    [string 
release];
    
NSLog(@"string:%@", string);
    
    
NSString * string1 = [[NSString alloc]init];
    
NSLog(@"0x%.8x", string1);
    string = 
@"This is a String!";
    
NSLog(@"0x%.8x", string1);
    [string1 
release];
    
NSLog(@"string1:%@", string1);

   //经典的字符串赋值

    NSString *string =@"[PDF:\"http://218.75.38.115:8080/gdsy\fawenguanli.nsf/0/540969EE9C8E9A8E4825796C002100BE/$file/%E6%B5%8B%\"E8%AF%95.pdf\"]测试.pdf[/PDF]"

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

    

    //遍历字符串中的每一个字符

   for (int i =0; i < [string length]; i++) 

    {

       char c = [string characterAtIndex:i];

       NSLog(@"字符串第 %d %c",i,c);

    }

//3、在以上方法中,提升速度:initWithString方法 

NSString *string = [[NSString alloc]initWithString:@"This is a String!"];
 
NSLog(@"string:%@",string);
[string 
release];

//4、用标准c创建字符串:initWithCString方法 char *Cstring ="This is a String!";
  
NSString *string = [[NSString alloc]initWithCString:Cstring];
  
NSLog(@"string:%@", string);
 [string 
release];

//5、创建格式化字符串:占位符(由一个%加一个字符组成)   int i =1;
    
int j =2;
    
NSString *string = [[NSString alloc]initWithString:[NSString stringWithFormat:@"%d.This is %i string!",i,j]];
    
NSLog(@"string:%@",string);
    [string 
release];


//6、NSString中的length方法返回字符串中的字符的个数,如:

   NSString *string = [[NSString allocinitWithString:@"OneTwoFour"];

    NSLog(@"string :%d",[@"OneTwoFour"length]);//返回10

//7、创建临时字符串

NSString *string = [NSString stringWithCString:"This is a temporary string"];

NSLog(@"string:%@",string);

/*--------------------从文件读取字符串:initWithContentsOfFile方法--------------------*/    

NSString *path = @"string.text";NSString *string = [[NSString alloc] initWithContentsOfFile:path];

NSLog(@"string:%@",string);

[string release];

/*----------------------写字符串到文件:writeToFile方法------------------------------*/    

NSString *string = [[NSString alloc] initWithString:@"This is a String!"];

NSLog(@"string:%@",string);

NSString *path = @"string.text";   

 [string writeToFile: path atomically: YES];

[string release];    

/*--------------------------------比较两个字符串----------------------------------*/       

 //用C比较:strcmp函数char string1[] = "string!";

char string2[] = "string!";

if(strcmp(string1, string2) = = 0)

{

   NSLog(@"1");

}


//isEqualToString方法   

比较字符串是否完全相等,大小写不一样也无法完全匹配 

NSString *string01 = @"This is a String!";

NSString *string02 = @"This is a String!";

BOOL result = [string01 isEqualToString:string02];

NSLog(@"result:%d",result);


//compare方法(comparer返回的三种值) 逐个字符进行比较:

//compare:options;带选项的比较字符串 

 NSString *string01 = @"This is a String!";

NSString *string02 = @"This is a String!";   

 BOOL result = [string01 compare:string02] = = NSOrderedSame;   

 NSLog(@"result:%d",result);   


 //NSOrderedSame判断两者内容是否相同

NSString *string01 = @"This is a String!";

NSString *string02 = @"this is a String!";

BOOL result = [string01 compare:string02] = = NSOrderedAscending;   

 NSLog(@"result:%d",result);


//NSOrderedAscending判断两对象值的大小(按字母顺序进行比较,string02大于string01为真)

NSString *string01 = @"this is a String!";

NSString *string02 = @"This is a String!";

BOOL result = [string01 compare:string02] == NSOrderedDescending;    

NSLog(@"result:%d",result);   

 

 //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,string02小于string01为真)

//不考虑大小写比较字符串1

NSString *string01 = @"this is a String!";

NSString *string02 = @"This is a String!";

BOOL result = [string01 caseInsensitiveCompare:string02] == NSOrderedSame;   

 NSLog(@"result:%d",result);    

 //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,string02小于string01为真)


//不考虑大小写比较字符串2

NSString *string01 = @"this is a String!";

NSString *string02 = @"This is a String!";

BOOL result = [string01 compare:string02options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;   

 NSLog(@"result:%d",result);     

//NSCaseInsensitiveSearch:不区分大小写比较 NSLiteralSearch:进行完全比较,区分大小写 NSNumericSearch:比较字符串的字符个数,而不是字符值。

/*----------------------------------改变字符串的大小写-----------------------------*/      

NSString *string2 = @"string";

    //设置字符串首字母大写

    NSLog(@"string2首字母大写:%@",[string2 capitalizedString]);

    //设置字符串全部内容为大写

   
    
NSLog(@"string1大写:%@",[string2 uppercaseString]);

    //设置字符全部内容为小写

    
    
NSLog(@"string2小写:%@",[string2 lowercaseString]);

/*-----------------------------在串中搜索子串-------------------------------------*/       

 NSString *string1 = @"This is a string";

 NSString *string2 = @"string";

 NSRange range = [string1 rangeOfString:string2];

int location = range.location;

int length = range.length;

NSString *string = [[NSString alloc] initWithString:[NSString stringWithFormat:@"Location:%i, length:%i",location, length]];

NSLog(@"string:%@",string);

[string release];

/*-----------------------------------抽取子串 ---------------------------------*/        

//-substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符

NSString *string1 = @"This is a string";

NSString *string2 = [string1 substringToIndex:3];

NSLog(@"string2:%@",string2);

//-substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符

NSString *string1 = @"This is a string";

NSString *string2 = [string1 substringFromIndex:3];

NSLog(@"string2:%@",string2);

//-substringWithRange: 

//按照所给出的位置,长度,任意地从字符串中截取子串

NSString *string1 = @"This is a string";

NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];

NSLog(@"string2:%@",string2);

NSRange:用来表示相关事物的范围,定义于 NSRange.h。通常是字符串里的字符范围或者数组里的元素范围。

typedef struct _NSRange

   NSUInteger location;

   NSUInteger length;


 }

创建方法:

直接给字段赋值:

NSRange r;

r.location =4;

r.length = 2;

或者,应用C语言的聚合结构赋值机制:

NSRange range = (4,2);


或者,适用Cocoa提供的函数NSMakeRange();

NSRange range = NSMakeRange(4,2);

使用NSMakeRange函数的好处是你可以在任何能够使用函数的地方使用它。


NSRange r;

r.location =4;

r.length = 2;

NSString *sub3 = [string substringWithRange:r];

NSLog(@"%@",sub3);

//扩展路径NSString *Path = @"~/NSData.txt";

NSString *absolutePath = [Path stringByExpandingTildeInPath];

NSLog(@"absolutePath:%@",absolutePath);

NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);

//文件扩展名NSString *Path = @"~/NSData.txt";

NSLog(@"Extension:%@",[Path pathExtension]);

/**********************************************NSMutableString****************************************************/   

 NSString是不可变的,一旦NSString被创建,就不能改变它。可以用它来生成新的字符串,查找字符串或将它其他字符串比较,但不能以删除字符或者添加字符的方式来改变它。

如果想改变字符串,请使用NSString的子类NSMutableString。


NSString类似Java中的String,NSMutableString类似与Java中的StringBuffer。


/*-----------------------------------给字符串分配容量-----------------------------------*/

示例代码:

NSMutableString *string;//声明变量

string=[NSMutableString stringWithCapacity:40];//初始化变量大小

这个capacity只是给NSMutableString的一个建议,字符串的大小并不限制与所提供的capacity,这个capacity只是个最优值。

[string appendString:@"hello,world"];//变量的初始值

[string appendFormat:@",%d",100];//字符串追加

NSLog(@"%@",string);//输出

NSRange range;//定义范围变量

range=[string rangeOfString:@"world"];//查找"world"在string中的位置

[string deleteCharactersInRange:range];//删除range范围字符串

NSLog(@"%@",string);


/*-----------------------------在已有字符串后面添加字符-------------------------------*/   

 //appendString: and appendFormat: NSMutableString *string1 = [[NSMutableString allocinitWithString:@"This is a NSMutableString"];

 [string1 appendString:@", I will be adding some character"];

 [string1 appendFormat:[NSString stringWithFormat:@", I will be adding some character"]];
 
NSLog(@"string1 = %@",string1);


  //两个字符串连接

 NSString *string1 =@"MAC OS Pro";

 NSString *string2 =@"Leopard";

 NSString *string3 = [string1 stringByAppendingString:string2];

 NSLog(string3,nil);

 NSString *string4 = [string1 stringByAppendingFormat:@"%d",10];

 NSLog(string4,nil);



NSMutableString *myString = [NSMutableStringstringWithString:@"Hello World."];

[myString appendFormat:@"The results are %@ now.",@"in"];

NSLog(@"%@", myString);

/*--------------在已有字符串中按照所给出范围和长度删除字符---------------------*/     

//删除字符串

 NSMutableString *string7 = [[NSMutableString alloc]initWithString:@"This is a NSMutableString"];

[string7 deleteCharactersInRange:NSMakeRange(0,2)];

  NSLog(string7,nil);


/*----------------在已有字符串后面在所指定的位置中插入给出的字符串-------------*/

//插入字符串

 NSMutableString *string6 = [NSMutableString stringWithFormat:@"Mac X"];

[string6 insertString:@"OS"atIndex:4];

 NSLog(string6,nil);


/*--------将已有的字符串换成其它的字符串------*/

//-setString:

NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"];

[String1 setString:@"Hello Word!"];

NSLog(@"String1:%@",String1);


/*--------按照所给出的范围,和字符串替换的原有的字符 ------*/  

    NSString *str0 = @"my name is lijun";

    

   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:rangwithString:@"居前"];

    NSLog(@"替换后字符串为%@",str);

    

    //将字符串中" "全部替换成 *

    str = [str0 stringByReplacingOccurrencesOfString:@" " withString:@"&"];

    NSLog(@"替换后字符串为%@",str);


/*----------------------------------- 搜索与替换字符串 --------------------------------*/


    NSMutableString *string = [[NSMutableString alloc]initWithString:@"This is a NSMutableString"];

   NSRange searchRange = [string rangeOfString:@"This"];

   if  (searchRange.location !=NSNotFound)

    {

         NSLog(@"location = %d, length = %d",searchRange.location,searchRange.length);

    }

/*-----------------------------将字符串转换为数组---------------------------------------*/


NSString  *string =@"One,Two,Three,Four,Five,Five,Six,Seven";

   NSArray  *wordArray = [string componentsSeparatedByString:@","];

    NSLog(@"%@", wordArray);


/*-----------------------判断字符串内是否还包含别的字符串(前缀,后缀)--------------------*/

//01:检查字符串是否以另一个字符串开头- (BOOL) hasPrefix: (NSString *) string; 

 NSString *string0 = @"NSStringInformation.txt";
 [string0 hasPrefix:@"NSString"
] ==1 ?  NSLog(@"YES") : NSLog(@"NO");
 [string0 hasSuffix:@".txt"
] ==1 ?  NSLog(@"YES") : NSLog(@"NO");

NSString *s1 = @"hello World";

 NSString *s2 =@"hello Mom";

 NSLog(@"%@ %@ %@", s1,[s1 isEqualToString:s2]?@"equals" :@"differs from",s2);

NSLog(@"%@ %@ %@", s1,[s1 hasPrefix:@"Hello"]?@"starts with" :@"does not start with",@"Hello");

NSLog(@"%@ %@ %@", s1,[s1 hasSuffix:@"Hello"]?@"ends with" :@"does not end with",@"Hello");

//02:查找字符串某处是否包含其它字符串 - (NSRange) rangeOfString: (NSString *) string,这一点前面在串中搜索子串用到过;


   NSRange range;

    range = [string5rangeOfString:@"Mac OS"];

   if (range.location !=NSNotFound

    {

        //得到字符串的位置和长度

       NSLog(@"%d %d",range.length,range.location);

    }

   else 

    {

       NSLog(@"没有发现");

    }



/*---------------------------------从字符串提取数字 -----------------------------------*/

使用一个值方法可将字符串转换成数字

NSString  *s3 =@"3.141592";

NSLog(@"%d", [s3 intValue]);

NSLog(@"%d", [s3 boolValue]);

NSLog(@"%f", [s3 floatValue]);

NSLog(@"%f", [s3 doubleValue]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值