NSString- 字串物件快速范例

NSString- 字串物件快速范例

NSString -> @”Hello”

NSString 是Objective-C中被使用字串相类处理的物件,它使用Unicode(UTF-16)方式储存字串,意味着支援多国语言内容,与C的Character有很大的不同,NSString是位于Foundation的Framework之中。

建立字串

后期Objective-C已经支援literal方式建立字串:

//-----------start-----------
    NSString *webSiteName = @"Coding With Danny";
    NSLog(@"%@",webSiteName);
//------------end------------

输出结果:

2014-12-26 14:58:06.513 ObjC-Test[24519:8873271] Coding With Danny

当然也可以使用instancetype回传值的方法直接建立,建立过程中已经包含纪忆体配置(alloc)与初始化:

//-----------start-----------
    NSString *webSiteName = @"Coding With Danny";
    NSString *message = [NSString stringWithFormat:@"%@ --",webSiteName];
    NSLog(@"%@",webSiteName);
    NSLog(@"%@",message);
//------------end------------

输出结果:

2014-12-26 14:58:04.643 ObjC-Test[24519:8873271] Coding With Danny
2014-12-26 14:58:04.643 ObjC-Test[24519:8873271] Coding With Danny --

合并字串

//-----------start-----------
    NSString *webSiteName = @"Coding With Danny";
    NSString *message = [NSString stringWithFormat:@"%@",webSiteName];
    message = [message stringByAppendingString:@" 2014"];
    NSLog(@"%@",webSiteName);
    NSLog(@"%@",message);
//------------end------------

输出结果:

2014-12-26 14:59:15.186 ObjC-Test[24555:8879388] Coding With Danny
2014-12-26 14:59:15.186 ObjC-Test[24555:8879388] Coding With Danny 2014

搜寻字串

//-----------start-----------
    NSString *webSiteName = @"Coding With Danny";
    NSString *message = [NSString stringWithFormat:@"%@",webSiteName];
    message = [message stringByAppendingString:@" 2014"];
    NSLog(@"字串:%@",message);
    NSRange searchResult = [message rangeOfString:@"2014"];
    if (searchResult.location == NSNotFound) {
        NSLog(@"搜寻字串:2014 未找到");
    } else {
        NSLog(@"搜寻字串:2014 已经找到位于第%lu开始,长度为%lu",searchResult.location,searchResult.length);
    }
//------------end------------

输出结果:

2014-12-26 15:01:25.832 ObjC-Test[24623:8891369] 字串:Coding With Danny 2014
2014-12-26 15:01:25.833 ObjC-Test[24623:8891369] 搜寻字串:2014 已经找到位于第18开始,长度为4

分割字串

将字串分割所能用的方法有从字串头开始并指定长度来撷取字串的substringToIndex、指定开始位置并指定长度撷取字串的substringFromIndex及使用window框概念的substringWithRange,NSRage的结构包含位置(Location)、长度(lehgth)。

//-----------start-----------
    NSString *webSiteName = @"Coding With Danny";
    NSString *message = [NSString stringWithFormat:@"%@",webSiteName];
    message = [message stringByAppendingString:@" 2014"];
    NSLog(@"字串:%@",message);
    NSLog(@"     12345678901234567890");
    NSLog(@"从头撷取前3个字的内容为:%@", [message substringToIndex:3]);
    NSLog(@"从第六个字开始撷取内容到结尾为:%@", [message substringFromIndex:6]);
    NSRange range = NSMakeRange(1, 5);
    NSLog(@"撷取从头算起第1字之后开始(不包含位置1),长度为5的字串内容为:%@", [message substringWithRange:range]);
    //也可以使用substringToIndex、substringFormatIndex完成substringWithRange的功能
    NSString *stringRange1 = [[message substringFromIndex:1] substringToIndex:5];
    NSLog(@"使用substringFromIndex、substringToIndex达成substringWithRange效果:%@",stringRange1);
//------------end------------

输出结果

2014-12-26 15:21:18.980 ObjC-Test[25073:8948689] 字串:Coding With Danny 2014
2014-12-26 15:21:18.980 ObjC-Test[25073:8948689]      12345678901234567890
2014-12-26 15:21:18.981 ObjC-Test[25073:8948689] 从头撷取前3个字的内容为:Cod
2014-12-26 15:21:18.981 ObjC-Test[25073:8948689] 从第六个字开始撷取内容到结尾为: With Danny 2014
2014-12-26 15:21:18.981 ObjC-Test[25073:8948689] 撷取从头算起第1字之后开始(不包含位置1),长度为5的字串内容为:oding
2014-12-26 15:21:18.982 ObjC-Test[25073:8948689] 使用substringFromIndex、substringToIndex达成substringWithRange效果:oding

取代字串

//-----------start-----------
    NSString *webSiteName = @"Coding With Danny";
    NSString *message = [NSString stringWithFormat:@"%@",webSiteName];
    message = [message stringByAppendingString:@" 2014"];
    NSLog(@"字串:%@",message);
    NSRange range = NSMakeRange(1, 5);
    NSLog(@"撷取从头算起第1字之后开始(不包含位置1),长度为5的字串内容为:%@ 利用此Range来当做取代的范围", [message substringWithRange:range]);
    NSString *stringReplaced = [message stringByReplacingCharactersInRange:range
                                                     withString:@"-----"];
    NSLog(@"%@",message);
    NSLog(@"%@",stringReplaced);
//------------end------------

输出结果:

2014-12-26 15:27:21.149 ObjC-Test[25197:8972430] 字串:Coding With Danny 2014
2014-12-26 15:27:21.149 ObjC-Test[25197:8972430] 撷取从头算起第1字之后开始(不包含位置1),长度为5的字串内容为:oding 利用此Range来当做取代的范围
2014-12-26 15:27:21.149 ObjC-Test[25197:8972430] Coding With Danny 2014
2014-12-26 15:27:21.149 ObjC-Test[25197:8972430] C----- With Danny 2014

大小写转换:

//-----------start-----------
    NSString *webSiteName = @"Coding With Danny";
    NSString *message = [NSString stringWithFormat:@"%@",webSiteName];
    message = [message stringByAppendingString:@" 2014"];
    NSLog(@"小写:%@",[message lowercaseString]);
    NSLog(@"大写:%@",[message uppercaseString]);
//------------end------------

输出结果:

2014-12-26 15:29:45.682 ObjC-Test[25264:8982469] 小写:coding with danny 2014
2014-12-26 15:29:45.682 ObjC-Test[25264:8982469] 大写:CODING WITH DANNY 2014

字串转数值:

字串转成数值类型时如果内容非符合要转换成该类型的数值类型时,转换后的值为0

//-----------start-----------
    NSString *stringNumber = @"2015";
    NSLog(@"%i",[stringNumber intValue]);
    NSLog(@"%ld",[stringNumber integerValue]);
    NSString *stringMuNumber = @"a201b5包含非字串内容";
    NSLog(@"%i",[stringMuNumber intValue]);
    NSLog(@"%ld",[stringMuNumber integerValue]);
    //
    NSString *stringFloatNumber = @"1";
    NSLog(@"%f",[stringFloatNumber floatValue]);
    stringFloatNumber = @"1.0345";
    NSLog(@"%f",[stringFloatNumber floatValue]);
//------------end------------

输出结果:

2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 2015
2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 2015
2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 0
2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 0
2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 1.000000
2014-12-26 15:36:23.836 ObjC-Test[25419:9004151] 1.034500