2010-03-04 6 views
12

지금 몇 시간 동안 검색 한 결과 내 문제에 대한 해결책을 찾지 못했습니다.NSString 또는 NSMutableString에있는 문자의 위치

"스페이서": [ "값 1", "값 2", "스페이서": [ "값 1", "값 2", ...

나는 다음과 같이 보이는있는 NSString가

내가 원하는 것은 문자열에서 [] 문자를 제거하는 것입니다. 객관적으로는 불가능한 것처럼 보입니다. c. 대부분의 다른 프로그래밍 언어는 strpos 나 indexOf와 같은 함수를 제공하여 문자 나 문자열을 검색하고 그 위치를 찾을 수있게합니다. 그러나 객관적으로는 이와 같이 될 수없는 것 같습니다. c.

누구든지 이러한 문자를 제거하는 방법에 대한 아이디어가 있습니까? 또한 남아 있어야하는 문자열에는 [] 문자가 있으므로 NSMutableString stringByReplacingOccurencesOfString : withString을 사용할 수 없습니다. 먼저 스페이서 문자열을 검색 한 후 다음 두 개의 [] 문자 만 제거해야합니다.

나를 도와 주셔서 감사합니다.

답변

22

문자열 내의 문자열을 찾으려면 NSString 클래스의 rangeOfXXX 메서드를 사용하십시오. 그럼 당신은 등, 문자열을 추출하는

이 예제는 샘플 문자열에서 열기/닫기 괄호의 첫 번째 세트를 제거

... String Programming Guide은 자세한 내용을 가지고

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]"; 
NSLog(@"%@", original); 

NSRange startRange = [original rangeOfString:@"\["]; 
NSRange endRange = [original rangeOfString:@"]"]; 

NSRange searchRange = NSMakeRange(0, endRange.location); 
NSString *noBrackets = [original stringByReplacingOccurrencesOfString:@"\[" withString:@"" options:0 range:searchRange]; 
noBrackets = [noBrackets stringByReplacingOccurrencesOfString:@"]" withString:@"" options:0 range:searchRange]; 
NSLog(@"{%@}", noBrackets); 

을 NSRanges을 구성 할 수 있습니다.
또한 NSScanner 클래스를 사용할 수도 있습니다.

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]"; 
NSRange range = [original rangeOfString:@"\["]; 
NSString *toBracket = [NSString stringWithString :[original substringToIndex:range.location] ]; 
NSLog(@"toBracket: %@", toBracket); 
를 : 나를 '[',이 경우 문자의 인덱스에 모든 것을 추출하는