如何获得大括号之间的子串?
我有一个字符串。
NSString *myString = @"{53} balloons";
如何获得子串53
?
NSString *myString = @"{53} balloons"; NSRange start = [myString rangeOfString:@"{"]; NSRange end = [myString rangeOfString:@"}"]; if (start.location != NSNotFound && end.location != NSNotFound && end.location > start.location) { NSString *betweenBraces = [myString substringWithRange:NSMakeRange(start.location+1, end.location-(start.location+1))]; }
编辑 :增加范围检查,thx到Keab42 – 好点。
这就是我做的。
NSString *myString = @"{53} balloons"; NSCharacterSet *delimiters = [NSCharacterSet characterSetWithCharactersInString:@"{}"]; NSArray *splitString = [myString componentsSeparatedByCharactersInSet:delimiters]; NSString *substring = [splitString objectAtIndex:1];
子串是53。
试试这个代码。
NSString *myString = @"{53} balloons"; NSString *value = [myString substringWithRange:NSMakeRange(1,2)];
您可以使用正则表达式来获取大括号之间的数字。 这可能看起来有点复杂,但好的一面是它会找到多个数字并且数字的位置无关紧要。
NSString *searchText = @"{53} balloons {12} clowns {123} sparklers"; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\{(\\d+)\\}" options:0 error:nil]; NSArray *matches = [regex matchesInString:searchText options:0 range:NSMakeRange(0, searchText.length)]; for (NSTextCheckingResult *r in matches) { NSRange numberRange = [r rangeAtIndex:1]; NSLog(@"Number: %@", [searchText substringWithRange:numberRange]); }
这将打印出来:
Number: 53 Number: 12 Number: 123
对于Swift 2.1: –
var start = strData?.rangeOfString("{") var end = strData?.rangeOfString("}") if (start!.location != NSNotFound && end!.location != NSNotFound && end!.location > start!.location) { var betweenBraces = strData?.substringWithRange(NSMakeRange(start!.location + 1, end!.location-(start!.location + 1))) print(betweenBraces) }
我想,你正在寻找NSScanner
类,至少如果你正在解决一般情况。 看看苹果文档 。
搜索“{”和“}”的位置。 在这些索引之间取子串。
检查任意数量的数据:
NSString *str = @"{53} balloons"; NSArray* strary = [str componentsSeparatedByString: @"}"]; NSString* str1 = [strary objectAtIndex: 0]; NSString *str2 = [str1 stringByReplacingOccurrencesOfString:@"{" withString:@""]; NSLog(@"number = %@",str2);
另一种方法是
NSString *tmpStr = @"{53} balloons"; NSRange r1 = [tmpStr rangeOfString:@"{"]; NSRange r2 = [tmpStr rangeOfString:@"}"]; NSRange rSub = NSMakeRange(r1.location + r1.length, r2.location - r1.location - r1.length); NSString *subString = [tmpStr substringWithRange:rSub];
如果您不知道将有多少位数,但是您知道它将始终用大括号括起来试试这个:
NSString *myString = @"{53} balloons"; NSRange startRange = [myString rangeOfString:@"{"]; NSRange endRange = [myString rangeOfString:@"}"]; if (startRange.location != NSNotFound && endRange.location != NSNotFound && endRange.location > startRange.location) { NSString *value = [myString substringWithRange:NSMakeRange(startRange.location,endRange.ocation - startRange.location)]; }
尽管如此,这可能是一种更有效的方法。
- Twilio跨平台移动工具(离子,反应本机)
- 以安全的方式存储您的开发登录名和密码
- 使用ios钥匙串进行身份validation – touch id(这是可能的)
- 如何在iPhone / iPad上存储非常大的图像
- 如何使用转换来旋转UIView
- 如何build立Apple Watch Extension / App和iOS App之间的沟通渠道
- iOS 5:UITabBarItem setFinishedSelectedImage:withFinishedUnselectedImage:不工作/忽略
- MAC地址在iOS 10.2中
- 将UIWebView转换为具有dynamic大小的UITableViewCell