2014-06-30 3 views
3

어떻게해야합니까? 나는 Objective-C에 익숙하지 않지만 이것을하는데 도움이 될만한 것을 찾을 수 없다.목표 C - 문자열을 배열로 분할

NSArray *splitLine = [currentLine componentsSeparatedByString:@":%@",notNumber]; 

여기에서 notNumber은 숫자가 아닌 모든 것을 나타내는 문자열입니다. 그래서 숫자가 아닌 문자열로 구분 된 콜론이있는 문자열을 분리하고 싶습니다. (나는 시간 즉 3:00pm에서 분할을 피하려고하지만, DESCRIPTION:LOCATION: 같은 iCal을 매개 변수로 분할합니다.) 당신은 여러 단계에서이 작업을 수행 할 수 있습니다

+0

위치 및 설명 뒤에 콜론 뒤에 공백이 있습니까? – Lucas

+0

불행히도 아니오! 그것은 항상 알파벳의 문자열입니다. – user2623825

+0

오케이. 그때 당신은 @ ""할 수 있었기 때문에 : --- 시간은 언제든지 될 수 있습니까, 아니면 항상 그 시간에 갈 수 있습니까? – Lucas

답변

1

, 이런 식으로. 나는이 코드를 컴파일하지 않았지만, 적어도 당신에게 무엇을 할 지에 대한 아이디어를 제공해야한다.

1) 구분과 일치하는 정규식 개체를 만듭니다

NSString *regexString = @"DESCRIPTION:\s|LOCATION:\s"; // or whatever makes sense for your scenario 
NSRegularExpression *regex = 
[NSRegularExpression regularExpressionWithPattern:regexString 
              options:NSRegularExpressionCaseInsensitive 
              error:nil]; 

2)이 하나 개의 구분으로 정규식과 일치하는 모든 다른 구분을 교체 :

NSRange range = NSMakeRange(0, string.length); 
NSString *string2 = [regex stringByReplacingMatchesInString:string 
                options:0 
                 range:range 
               withTemplate:@"SEPARATOR"]; 

3) 문자열을 분할!

NSArray *elements = [string2 componentsSeparatedByString:@"SEPARATOR"]; 
0

정규 표현식을 사용할 수 있습니다!

패턴 (나는이 질문의 핵심이라고 생각) 사용 :

pattern = @"(?<=[^0-9]):(?=[^0-9])" 

이 패턴은 일치 ':'숫자로 둘러싸여하지 문자.

그런 다음 데이터 마지막으로

dummy = @"NEVERSEETHIS" 

NSRegularExpressions *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil]; 
NSRange range = NSMakeRange(0, [string length]) 
NSString *modified= [regex replaceMatchesInString:yourString options:0 range:range withTemplate:dummy]; 

과에 표시되지 않습니다 더미 값으로 대체, 분할 문자열

return [modified componentsSeparatedByString:dummy]; 
0

최단 솔루션을 분할합니다.

NSString *str = @"Please split me to form array of words"; 
NSArray *wordsArray = [str componentsSeparatedByString:@" "]; 
관련 문제