我有一个像这样的字符串
NSString *string = @"feng2zhong3"
我希望将此字符串拆分为feng2
和zhong3
,该怎么做?
答案 0 :(得分:5)
尝试:
NSString* feng = [string substringToIndex:4]
NSString* zhong = [string substringFromIndex:5]
编辑:
现在您已经清楚了解输入数据是什么样的,一个选项是使用正则表达式来执行这样的匹配:
NSString* string = @"feng4shui5";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\D+\d+" options:NSRegularExpressionCaseInsensitive error:&error];
NSArray *matches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];
for (NSTextCheckingResult *match in matches) {
NSRange matchRange = [match range];
NSRange firstHalfRange = [match rangeAtIndex:1];
NSRange secondHalfRange = [match rangeAtIndex:2];
NSLog([userinput substringWithRange:matchRange]);
}
其中string是包含输入的字符串。
答案 1 :(得分:0)
使用substringFromIndex和substringToIndex方法
以下代码已全部用于您。它可以满足您的要求
NSMutableString *s = @"fig2sine3";
NSCharacterSet *removeCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
array=[s componentsSeparatedByCharactersInSet:removeCharSet];
nslog(@“分隔字符串%@”,数组);
这对您的要求非常有用。
答案 2 :(得分:0)
您可以将+[NSString rangeOfCharacterFromSet:options:range:]
与+[NSCharacterSet decimalDigitCharacterSet]
一起使用,并通过结果范围获取子字符串。
或者您可以使用NSScanner
使用:
NSCharacterSet *digitSet = [NSCharacterSet decimalDigitCharacterSet];
NSScanner *scanner = [NSScanner scannerWithString:inputString];
......并且连续打电话:
success = [scanner scanUpToCharactersFromSet:digitSet intoString:&namePart];
// ...
success = [scanner scanCharactersFromSet:digitSet intoString:&digitPart];
// ...