获取NSString子字符串

理解Objective-C与Swift在iOS开发中的应用
本文深入探讨了Objective-C与Swift两种编程语言在iOS开发领域的应用,包括其优势、特点以及如何在实际项目中进行选择与运用。

NSString类中提供了这样三个方法用于获取子字符串:

它们该怎么使用呢?见下面代码即可知道。

NSString*str =@"12345";

// NSString *subString0 = [str substringFromIndex:-1];//会放生越界错误

NSString*subString1 = [strsubstringFromIndex:0]; //@"12345"

NSString*subString2 = [strsubstringFromIndex:1]; //@"2345"

NSString*subString3 = [strsubstringFromIndex:4]; //@"5"

NSString*subString4 = [strsubstringFromIndex:5]; //@""

// NSString *subString5 = [str substringFromIndex:6]; //会放生越界错误


// NSString *subString10 = [str substringToIndex:-1]; //会放生越界错误

NSString*subString11 = [strsubstringToIndex:0]; //@"“

NSString*subString12 = [strsubstringToIndex:1]; //@"1”

NSString*subString13 = [strsubstringToIndex:4]; //@"1234“

NSString*subString14 = [strsubstringToIndex:5]; //@"12345”

// NSString *subString15 = [str substringToIndex:6]; //会放生越界错误


NSRangerange1 =NSMakeRange(-1,5);

NSRangerange2 =NSMakeRange(0,6);

NSRangerange3 =NSMakeRange(0,5);

NSRangerange4 =NSMakeRange(1,4);

NSRangerange5 =NSMakeRange(0,0);

NSRangerange6 =NSMakeRange(4,1);

//NSString *subString31 = [str substringWithRange:range1]; //会放生越界错误

//NSString *subString32 = [str substringWithRange:range2]; //会放生越界错误

NSString*subString33 = [strsubstringWithRange:range3]; //@"12345“

NSString*subString34 = [strsubstringWithRange:range4]; //@"2345”

NSString*subString35 = [strsubstringWithRange:range5]; //@"”

NSString*subString36 = [strsubstringWithRange:range6]; //@"5”

在 Objective - C 中,有多种方法可以遍历字符串,以下是几种常见的方式: ### 使用 `for` 循环结合 `characterAtIndex:` 方法 ```objc #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"Hello, World!"; for (NSUInteger i = 0; i < [str length]; i++) { unichar c = [str characterAtIndex:i]; NSLog(@"%C", c); } } return 0; } ``` 这种方法通过 `for` 循环,利用 `characterAtIndex:` 方法逐个获取字符串中的字符。 ### 使用 `enumerateSubstringsInRange:options:usingBlock:` 方法 ```objc #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"Hello, World!"; [str enumerateSubstringsInRange:NSMakeRange(0, [str length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { NSLog(@"%@", substring); }]; } return 0; } ``` 该方法可以按照指定的选项遍历字符串的子字符串,这里使用 `NSStringEnumerationByComposedCharacterSequences` 选项按字符序列遍历。 ### 使用快速枚举(Fast Enumeration)结合 `NSString` 的 `UTF16String` ```objc #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"Hello, World!"; const unichar *utf16 = [str UTF16String]; for (NSUInteger i = 0; i < [str lengthOfBytesUsingEncoding:NSUTF16StringEncoding] / sizeof(unichar); i++) { unichar c = utf16[i]; NSLog(@"%C", c); } } return 0; } ``` 这种方式先获取字符串的 UTF - 16 编码表示,然后通过快速枚举遍历其中的字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值