2015-09-23 108 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