分享

NSString(字符串)详细操作

 永恒clek4xeu0r 2017-01-19
小常识: NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT. @是Cocoa元素的前缀,很多地方我们会看到,比如接下来...

 

1, 创建一个NSString对象

简单方法:

NSString *aString = @'我是个NS字符串!'; //除了引号外加@, 没别的区别不需要操心内存管理
NSString *aString = [[NSString alloc] initWithFormat:@'这也是个NS字符串!'];//要去retain和release这个字符串,系统不管。

*initWithFormat是其中一个初始化方法,常用的还有

//从一个文件读取需要的内容 - (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error //从一个地址读取需要的内容 - (id)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error

*以上方法得到的NSString的retain值为1,所以记得release掉阿~~

2,使用一个NSString对象

NSString *aString = @'This is a NSString';   NSLog(aString); //在控制台输出信息,该函数方法需要一个NSString对象作为参数   NSLog('这样不会好使的');   NSLog(@'这样就会好使拉~');

再比如设置一个UIView的标题:

[UIView setTitle:aString];   [UIView setTitle:@'标题'];   UIView.title = aString;

3,释放NSString

[aString release]; //对象将被系统释放掉咯

*记得不要释放直接用 = @”xxx” 的NSString对象哟,系统会管的~

4,快速使用一个NSString

NSLog([NSString stringWithFormat:@'一个NS字符串']);

//这种快速方法返回的是一个retain为1,autorelease的对象,不需要操心它的内存管理

5,常用方法

nString = [aString substringToIndex:4]; //nString将得到aString中的前四个字符

 

占位符:

%c 一个单一的字符

%d 一个十进制整数

%i 一个整数

%e, %f, %g 一个浮点数

%o 一个八进制数

%s 一个字符串

%x 一个十六进制数

%p 一个指针

%n 一个等于读取字符数量的整数

%u 一个无符号整数

%[] 一个字符集

%% 一个精度符号

//格式化字符串:占位符(由一个%加一个字符组成)

如:

int  textCount=textField.text.length; //创建一个整型变量textCount,用于获取输入文本框的文字长度

NSString *astring = [NSString stringWithFormat:@'你输入的字符串长度是:%d“,textCount];//创建一个字符变量astring ,取得文字数据类型,把整数转换为文字数据

label1.text=astring ; //标签显示字符变量astring的数据内容

textField.text=NULL; //将文本框中输入的文字清空

 

如:

int i = 1;

int j = 2;

NSString *astring = [[NSString alloc]initWithString:[NSString stringWithFormat:@'%d.This is %i string!',i,j]];

NSLog(@'astring:%@',astring);

[astring release];

 

字符串转换

 

1、字符串与数值互相转换 
//字符串转换为数值

     NSString *aNumberString = @'123';

     int i = [aNumberString intValue];

 

//数值转换为字符串

     int aNumber = 123;

     NSString *aString = [NSString stringWithFormat:@'%d', aNumber];

 

2、字符串与日期相互转换

//字符串转换为日期

  NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];    //实例化一个NSDateFormatter对象
    
       [dateFormat setDateFormat:@'yyyy-MM-dd HH:mm:ss'];    //设定时间格式,这里可以设置成自己需要的格式
    
       NSDate *date =[dateFormat dateFromString:@'1980-01-01 00:00:01'];

 

//日期转换为字符串

  NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];   //实例化一个NSDateFormatter对象
    
        [dateFormat setDateFormat:@'yyyy-MM-dd HH:mm:ss'];    //设定时间格式,这里可以设置成自己需要的格式

  NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];

 

 

 

常用字符串操作

1、获得字符串长度

       NSString* str1=@'MAC OS Pro';

       NSLog(@'长度是 %d',[str1 length]);

 

2、两个字符串连接

       NSString* str2=@'MAC OS Pro';

       NSString* str3=@' Leopard';

       NSString* str4=[str2 stringByAppendingString:str3];

       NSLog(str4,nil);

       NSString* str5=[str2 stringByAppendingFormat:@' %d',10];

       NSLog(str5,nil); 

 

3、插入字符串

       NSMutableString* string1=[NSMutableString stringWithFormat:@'Mac X'];

       [string1 insertString:@'OS ' atIndex:4];

       NSLog(string1,nil);

 

4、删除字符串

       NSMutableString* string2=[NSMutableString stringWithFormat:@'删除字符串'];

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

       NSLog(string2,nil);

 

5、抽取部分字符串

      NSString* string6=@'This is Mac OS X';

       NSString *nstr1,*nstr2,*nstr3;

       //从开头抽取字符串

       nstr1=[string6 substringToIndex:4];

       NSLog(nstr1,nil);

       //抽取末位位置的字符串

       nstr2=[string6 substringFromIndex:8];

       NSLog(nstr2,nil);

       //抽取指定范围的字符串

       nstr3=[string6 substringWithRange:NSMakeRange(5,2)];

       NSLog(nstr3,nil);

 

6、从文件读取字串:initWithContentsOfFile方法

       NSString *path = @'astring.text';

       NSString *astring = [[NSString alloc] initWithContentsOfFile:path];

       NSLog(@'astring:%@',astring);

       [astring release];

 

7、抽取子串

-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);

      const char *fieldValue = [value  cStringUsingEncoding:NSUTF8StringEncoding];

      const char *fieldValue = [value UTF8String];

 

8、NSString 转 NSData

      NSString* str= @'kilonet';

      NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding];

 

      Date format用法:

      -(NSString *) getDay:(NSDate *) d

      {

      NSString *s ;

      NSDateFormatter *format = [[NSDateFormatter alloc] init];

       [format setDateFormat:@'YYYY/MM/dd hh:mm:ss'];

      s = [format stringFromDate:d];

      [format release];

      return s;

      }

 

9、计算字符串长度:

          CGFloat w = [title sizeWithFont:[UIFont fontWithName:@'Arial' size:18]].width;

其实动态获取字符串NSString的CGSize的大小最主要的还是API NSString类提供的一个方法

sizeWithFont: constrainedToSize

例如:

 CGSize feelSize = [feeling sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(190,200)];
 float  feelHeight = feelSize.height;


10、在很多语言如 java , ruby , python中都有将字符串切分成数组或者将数组元素以某个间隔字符串间隔形成新的数组。 其实NSArray也提供了这样的功能。

使用-componentsSeparatedByString:来切分NSArray。 如:

引用
NSString *string = @”one:two:three”;
NSArray *aArray = [string componentsSeparatedByString:@':'];


用-componentsJoinedByString:来合并NSArray中的各个元素并创建一个新的字符串,如:
string = [aArray componentsJoinedByString:@','];

这样,上面的数组就中的各个元素就以”,”分割形成一个字符串。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多