2015-09-23 106 views
-1

我有一个文本: sometext [字符串1字符串2] someText提取字符串出一组特定字符串的

我想检索字符串1和字符串从这段文字 单独字符串如何可以解析它目标 - c?

+0

什么是你'sometext'那是一个'Array'还是什么? – Praveenkumar

+0

其字符串文本 – sulabh

+0

您可以使用'NSRegularExpression'或'rangeOfString:'。你有什么尝试? – Larme

回答

0

我已经找到了解决办法

NSArray *arrayOne = [prettyFunctionString componentsSeparatedByString:@"["]; 
    NSString *parsedOne = [arrayOne objectAtIndex:1]; 

    NSArray *arrayTwo = [parsedOne componentsSeparatedByString:@"]"]; 
    NSString *parsedTwo = [arrayTwo objectAtIndex:0]; 

    NSArray *arrayThree = [parsedTwo componentsSeparatedByString:@" "]; 
    NSString *className = [arrayThree objectAtIndex:0]; 
    NSString *functionName = [arrayThree objectAtIndex:1]; 

感谢反正

+0

如果有人有更好的解决方案,请发帖 – sulabh

0

也许这样的事情可能会为你工作

NSString * string = @"sometext[string1 string2]sometext"; 
NSString * pattern = @"(.*)\[(.+) (.+)\](.*)" 

NSRegularExpression * expression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:NULL]; 
NSTextCheckingResult * match = [expression firstMatchInString:string options:NSMatchingReportCompletion range:NSMakeRange(0, string.length)]; 

if (match) { 

    NSString * substring1 = [string substringWithRange:[match rangeAtIndex:2]]; 
    NSString * substring2 = [string substringWithRange:[match rangeAtIndex:3]]; 

    // do something with substring1 and substring2 
} 
0

你可以使用这个简单的方法途径

NSString *str = @"sometext[string1 string2]someText"; 
NSInteger loc1 = [str localizedStandardRangeOfString:@"["].location; 
NSInteger loc2 = [str localizedStandardRangeOfString:@"]"].location; 
NSString *resultString = [str substringWithRange:(NSRange){loc1+1,loc2-loc1}]; 
NSArray *resultArry = [resultString componentsSeparatedByString:@" "]; 

结果数组将包含您所需的Reuslt

0

为了完整性 - 如果您尝试从已知模式的字符串中提取字符串,则需要使用NSScanner

这通过一次通过字符串。

NSString *string = @"sometext[string1 string2]someText"; 
NSScanner *scanner = [NSScanner scannerWithString:string]; 

NSString *str1; 
NSString *str2; 

[scanner scanUpToString:@"[" intoString:nil]; // Scan up to the '[' character. 
[scanner scanString:@"[" intoString:nil]; // Scan the '[' character and discard it. 
[scanner scanUpToCharactersFromSet:[NSCharacterSet whitespaceCharacterSet] intoString: &str1]; // Scan all the characters up to the whitespace and accumulate the characters into 'str1' 
[scanner scanUpToCharactersFromSet:[NSCharacterSet alphanumericCharacterSet] intoString:nil]; // Scan up to the next alphanumeric character and discard the result. 
[scanner scanUpToString:@"]" intoString:&str2]; // Scan up to the ']' character, accumulate the characters into 'str2' 

// Log the output. 
NSLog(@"First String: %@", str1); 
NSLog(@"Second String: %@", str2); 

这使输出到控制台:

2015-09-23 11:31:02.522 StringExtractor[46678:4289499] First String: string1 
2015-09-23 11:31:02.522 StringExtractor[46678:4289499] Second String: string2