您的位置:首页 > 其它

OC中Foundation框架之NSString、NSMutableString

2015-05-16 09:09 435 查看
创建方式

1)直接赋值
NSString *str =@"abc";
2)创建对象
NSString *str2 = [[NSString alloc]init];
str2 =@"abc"
3)格式化创建
NSString *str3=[NSString stringWithFromat :@"@",@"abc"];

4)从文件中获取
NSString strand =[NSString stringWithContentsOfFile:@"/Users/apple/Desktop/test.txt" usedEncoding:NSUTF8StringEncoding error:&err];

5)把字符串写入到文件
NSString *str7 = @"abc";
//路径                            //原子性
str7 writeToFile :(NNString *) atomically :(BOOL)
//编码格式                         //错误信息
encoding:(NSStringEncoding) error:(NSError **);

NSERROR *err=nil;
BOOL flag=str7 writeToFile:@"/Users/apple/Desktop/test.txt" atomically:NO encoding : NSUTF8StringEncoding error:(&err];
if(flag){
NSLog(@"写入成功");
}

if(err != nil){
NSLog(@"写入失败");
}else{
NSLog(@"写入成功");
}


使用NSURL读写字符串

//1)使用NSURL 写入字符串数据到文件中

NSURL *writeUrl = [NSURL URLWithString:@"file:///Users/apple/Desktop/1.txt"];

NSString *str =@"itcast";

BOOL isSucess = str writeToURL :writeUrl atomically:NO encoding:NSUTF8StringEncoding error:nil];

if(isSucess){
NSLog(@"写入成功");
}

//2)使用NSURL读取字符串到文件

NSURL *readUrl =[NSURL URLWithString:@"file:////Users/apple/Desktop/1.txt"]
NSString *straighten = [NSString stringWithContentsOfURL:readUrl encoding :NSUTF8StringEncoding error:nil];
NSLog(@"%@",str2);


NSString 字符串的比较

1)比较两个字符串大小
compare 方法:返回结果有三种:
NSOrderedAscending         str < str2  -1
NSOrderedSame               str == str2
NSOrderedDescending       str >str2  1

2)比较时指定条件
如果要忽略大小写的话,可以在options 里面加入参数 NSCaseInsensitiveSearch

[str1 compare: str2 options:NSCaseInsensitiveSearch];

条件有很多:
NSCaseInsensitiveSearch: 不区分大小写字符
NSLiteralSearch:            进行完全比较,区分大小写(默认)
NSNumericSearch:          比较字符串的字符个数,而不是字符值
..... 等等 还有很多

3)判断是否相同
isEqualToString
4) NSString前后缀检查
判断字符串是否以另一个字符串开头
-(BOOL) hasPrefix:(NSString *) aString
以什么结尾
-(BOOL) hasSuffix :(NSString *) aString
5)字符串的查找
判断是否包含某个字符串,返回的为第一次出现的范围,NSRange包含两个成员 location :位置       length 长度, 如果查找不到,返回的Ranage的长度为0,位置为一个特别大得数
-(NSRange) rangeOfString:(NSString *) aString;

反向判断是否包含(加入条件 NSBackwardsSearch]
-(NSRange) rangeOfString :(NSString *) options: NSBackwardsSearch

if(range.location != NSNotFound)

  6)字符串的截取
     从指定位置from开始(包括指定位置的字符)到末尾
    -(NSString *) substringFromIndex:(NSUInteger) from;
      从开头截取至to的位置,不包含to位置的字符
    -(NSString *) substringToIndex :(NSUInteger) to;
      按照所给出的NSRange从字符串截取子串
    -(NSString *)substringWithRange:(NSRange) range;
  7)字符串的替换
      用replacement替换target
    -(NSString *) stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
   8) 获取字符串的长度
    -(NSUInteger) length;
   9) 返回index位置对应的字符
    -(unichar)characterAtIndex:(NSUInteger)index;
   10)字符串和其他数据类型的转换
    -(double) doubleValue
    -(float) floatValue
    -(int) intValue
     OC的字符串和C的字符串的互转
    NSString *s4=@"helloworld";
    const char *ss =[s4 UTF8String];

    char ch[]="itcast";
    NSString *ocString =[NSString stringWithUTF8String :ch];
   11)去除空格
        去除所有的空格
        [str stringByReplacingOccurrencesOfString:@" " withString"@""]
        去除首尾的空格
       [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        去除头尾的小写字母
       lowercaseLetterCharacterSet
        去除头尾的大写字母
       uppercaseLetterCharacterSet
        去掉头尾的指定字符串
       characterSetWithCharactersInString:(NSString *)aString;


NSRange使用

NSRange是Foundation框架中比较常用的结构体,
type struct _NSRange{
NSUInteger location;
NSUInteger length;
}
//NSUInteger 的定义
typedef unsigned int NSUInteger;
typedef unsigned long NSUInteger;
  通常用来表示一个范围,字符串里的字符长度,数组中元素的范围

创建:
  1)直接赋值
     NSRange range = {2,5};
  2)先定义后赋值
     NSRange range2;
     range2.location = 1;
     range2.length = 23;
  3)使用NSMakeRange 创建一个NSRange类型的变量
    NSRange range3 = NSMakeRange(45 ,3);

  


NSMutableString 的概念

NSMutableString类 继承NSString类,那么NSString提供的方法在NSMutableString中基本都可以使用,NSMutableString好比一个字符串链表,它可以任意的动态在字符串中添加字符串 ,删除字符串 ,指定位置插入字符串,使用它来操作字符串会更加灵活
--类似于java中的StringBuffer /StringBuilder


NSMutableString特有的方法

具有NSString的所有方法

创建一个空字符串
NSMutableString *str2 = [NSMutableString string];
给字符串追加内容
[str2 appendString:@"welcome"];
拼接一段格式化字符串到最后面
-(void) appendFormat:(NSString *)format,...;
从指定的range开始,删除字符
-(void) deleteCharactersInRange:(NSRange) range;
在loc这个位置插入aString
-(void)insertString:(NSString *) aString atIndex:(NSUInteger)loc;
使用aString替换range范围内的字符串,一般不是以string开头的一般都不会产生一个新的字符串,replaceOccurrencesOfString方法不需要传范围参数
-(void)replaceCharactersInRange:(NSRange)range withString :(NSString *)aString;

替换需要传入range 通常配合rangeOfString 一起使用
NSRange rage =[str rangeOfString:@"itcast"];


注意事项:

1)
NSMutableString *str =@"xxx"; //这种方式创建的是NSString而不是NSMutableString

2)NSMutableString的string属性:会将源对象的所有字符串都覆盖掉
.string 属性可以修改字符串的内容

例如:
NSMutableString *str =[NSMutableString string];
[str appendString:@"itcast"];
str.string=@"a";
3)位枚举,枚举值是2的0次方、1次方、2次方...
String 的附带条件 options 所传入的就是位枚举, 所以可以直接输入 0 2 4等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: