Zhe*_*hen 32 hash substring objective-c nsstring ios
我有一个字符串,如下所示,
NSString * aString = @"This is the #substring1 and #subString2 I want";
Run Code Online (Sandbox Code Playgroud)
如何只选择以"#"开头的文本(以空格结尾),在本例中为"subString1"和"subString2"?
注意:编辑问题是为了清晰起见
ugh*_*fhw 56
您可以使用NSScanner将字符串拆分.此代码将循环遍历字符串并使用子字符串填充数组.
NSString * aString = @"This is the #substring1 and #subString2 I want";
NSMutableArray *substrings = [NSMutableArray new];
NSScanner *scanner = [NSScanner scannerWithString:aString];
[scanner scanUpToString:@"#" intoString:nil]; // Scan all characters before #
while(![scanner isAtEnd]) {
NSString *substring = nil;
[scanner scanString:@"#" intoString:nil]; // Scan the # character
if([scanner scanUpToString:@" " intoString:&substring]) {
// If the space immediately followed the #, this will be skipped
[substrings addObject:substring];
}
[scanner scanUpToString:@"#" intoString:nil]; // Scan all characters before next #
}
// do something with substrings
[substrings release];
Run Code Online (Sandbox Code Playgroud)
以下是代码的工作原理:
substring.如果#是最后一个字符,或者后面紧跟一个空格,则该方法将返回NO.否则它将返回YES.substring到substrings数组中.Var*_*rji 33
[aString substringWithRange:NSMakeRange(13, 10)]
Run Code Online (Sandbox Code Playgroud)
会给你substring1
您可以使用以下方法计算范围:
NSRange startRange = [aString rangeOfString:@"#"];
NSRange endRange = [original rangeOfString:@"1"];
NSRange searchRange = NSMakeRange(startRange.location , endRange.location);
[aString substringWithRange:searchRange]
Run Code Online (Sandbox Code Playgroud)
会给你substring1
阅读更多: 字符在NSString或NSMutableString中的位置
和
http://iosdevelopertips.com/cocoa/nsrange-and-nsstring-objects.html
Rob*_*way 11
非常简单,易于理解的版本,避免了NSRange东西:
NSArray * words = [string componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSMutableArray * mutableWords = [NSMutableArray new];
for (NSString * word in words){
if ([word length] > 1 && [word characterAtIndex:0] == '#'){
NSString * editedWord = [word substringFromIndex:1];
[mutableWords addObject:editedWord];
}
}
Run Code Online (Sandbox Code Playgroud)
假设您要查找以磅开头的第一个字符串,并以空格结尾,这可能会起作用.我没有在我面前使用XCode,所以请原谅我,如果语法错误或长度偏离1:
-(NSString *)StartsWithPound:(NSString *)str {
NSRange range = [str rangeOfString:@"#"];
if(range.length) {
NSRange rangeend = [str rangeOfString:@" " options:NSLiteralSearch range:NSMakeRange(range.location,[str length] - range.location - 1)];
if(rangeend.length) {
return [str substringWithRange:NSMakeRange(range.location,rangeend.location - range.location)];
}
else
{
return [str substringFromIndex:range.location];
}
}
else {
return @"";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69553 次 |
| 最近记录: |