正如标题所示,我想从NSString中得到最后一个字.我以为使用这段代码:
NSArray *listItems = [someNSStringHere componentsSeparatedByString:@" "];
NSString *lastWordString = [NSString stringWithFormat:@"%@", listItems.lastObject];
anotherNSStringHere = lastWordString;
Run Code Online (Sandbox Code Playgroud)
但我认为如果它很大(并且它很大),NSArray将花费一些时间加载,并且它不会识别用逗号分隔的单词.
谢谢你的帮助!
Wev*_*vah 28
如果你想要超级健壮:
__block NSString *lastWord = nil;
[someNSStringHere enumerateSubstringsInRange:NSMakeRange(0, [someNSStringHere length]) options:NSStringEnumerationByWords | NSStringEnumerationReverse usingBlock:^(NSString *substring, NSRange subrange, NSRange enclosingRange, BOOL *stop) {
lastWord = substring;
*stop = YES;
}];
Run Code Online (Sandbox Code Playgroud)
(这也适用于非罗马语言; iOS 4 +/OS X 10.6+.)
基本说明:
-enumerateSubstringsInRage:options:usingBlock:做它在锡上所说的内容:它枚举子串,它由你传入的选项定义.NSStringEnumerationByWords说"我想要给我的话",并NSStringEnumerationReverse说"从字符串的末尾开始而不是从开始".
由于我们从最后开始,给我们的第一个单词substring将是字符串中的最后一个单词,所以我们设置lastWord为,然后将BOOL指向的to 设置stop为YES,这样枚举就会立即停止.
lastWord是被定义为当然的__block,所以我们可以把它的块里面,看看它之外,它的初始化nil,所以如果该字符串有没有的话(例如,如果它是空的,或者是所有的标点符号)我们,当我们试图用不死机lastWord.
JDx*_*JDx 11
尝试一下:
NSRange range = [someNSStringHere rangeOfString:@" " options:NSBackwardsSearch];
NSString *result = [someNSStringHere substringFromIndex:range.location+1];
Run Code Online (Sandbox Code Playgroud)