【Objective-C编程】深入显出字符串NSString

【Objective-C编程】深入浅出字符串NSString

Oc的字符串处理在Cocoa中有两大类,NSString和NSMutableString,既然为类那么创建出来的也必定为对象

创建字符串对象时 会创建一个内容不可改变的对象,这个对象称为不可变对象

可以使用NSString类处理不可变字符串   

如果经常需要处理字符串或者更改字符串中的字符  我们可使用NSMutableString类(动态字符串)。本章博客主要围绕NSString类来讲。


1.NSString创建

NSString提供了许多创建和初始化新字符串的方法。下面这个是创建常量字符串的。 它是编译到可执行文件中的NSString的实例,它不会在内存中消失。

NSString *hello = @"hello"; // 声明
NSString *append = [hello stringByAppendingString:@"world!"]; // 追加
NSString *helloStr = [[NSString alloc] initWithString:@"hello world"]; //分配内存并初始化


2.字符串的比较

    NSString* str =@"hello";
    NSString* appedStr =@"hello";
    BOOL result =[str isEqualToString:appedStr];
    if (result){
        NSLog(@"相等的");
    }
结果:
2015-08-03 17:17:11.735 HelloWorld[1201:831501] 相等的


3.字符串的转换

    // 字符串转数字
    NSString *ss = @"123";
    int a = [ss intValue] + 13; // 字符串转int型
    double dd = [ss doubleValue] + 33.3; // 字符串转double型

    // 字符串转数组
    NSString *string = @"one,two,three,four";
    NSArray *array = [string componentsSeparatedByString:@","]; // 通过逗号分隔字符串转化为数组
    NSLog(@"array:%@", array); // 输出整个数组中所有元素
    NSString *value = [array objectAtIndex:0]; // 取出第0个元素
    NSLog(@"value:%@", value);
    
    // 数组转字符串
    NSString *str = [array componentsJoinedByString:@","];
    NSLog(@"str:%@", str);


4.字符串的分割

 // 字符串转数字
    NSString *nstring = @"a,b,c,d,e";
    NSArray *array = [nstring componentsSeparatedByString:@","];
    for (int i = 0; i < [array count]; i++) {
        NSLog(@"string:%@", [array objectAtIndex:i]);
    }


5.格式化字符串

NSString *format = [NSString stringWithFormat:@"1 + 1 = %i", 2]; // 格式化
%@     对象  
%d, %i 整数  
%u     无符整形  
%f     浮点/双字  
%x, %X 二进制整数  
%o     八进制整数  
%zu    size_t  
%p     指针  
%e     浮点/双字 (科学计算)  
%g     浮点/双字  
%s     C 字符串  
%.*s   Pascal字符串  
%c     字符  
%C     unichar  
%lld   64位长整数(long long)  
%llu   无符64位长整数  
%Lf    64位双字  
%e 是实数,用科学计数法计的 


6.常见的NSString方法

计算字符串长度 [str length];
    
将一个字符串复制到另一个字符串 [NSString stringWithString: str1];
    
将一个字符串复制到另一个字符串尾端 [str stringByAppendingString:@""];
    
判断字符串是否相等  [str1 isEqualToString : str2]
   
将字符串转成大写 [str uppercaseString];
    
将字符串转成小写 [str lowercaseString];
    
验证字符串是否大于,等于或小于另一个字符串(大小写区分)
 switch ([str1 compare:str2]) {
            case NSOrderedDescending:
                //str1 > str2
                break;
            case NSOrderedSame:
                //str1 = str2
                break;
            case NSOrderedAscending:
                //str1 < str2;
                break;
            default:
                break;
}

验证字符串是否大于,等于或小于另一个字符串(大小写不区分)
    大小写不区分 可以使用 caseInsensitiveCompare
    [str caseInsensitiveCompare:@""];

从字符串中提取前n个字符
    [str substringToIndex:n];

从字符串中提取从索引n开始到结尾的子字符串
    [str substringFromIndex:n];

从字符串中提取从索引n到索引m的子字符串(m-n个字符)
    [[str substringFromIndex:n] substringToIndex: (m-n)];
    [str substringWithRange:NSMakeRange(n, (m-n))];

从字符串中查找字符串
        NSString *str = @"abcdefghijklmnopq";
        NSRange range = [str rangeOfString:@"cde"];
        NSLog(@"位置:%lu   长度:%lu",range.location,range.length);



ok.关于Oc的NSString就分享到此,有讲得不对的地方还望指出进行探讨互相学习!


版权声明:本文为博主原创文章,未经博主允许不得转载。