拆分Objective-C字符串

时间:2011-04-13 09:15:35

标签: objective-c

我有一个像这样的字符串

NSString *string = @"feng2zhong3"

我希望将此字符串拆分为feng2zhong3,该怎么做?

3 个答案:

答案 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];
// ...