2016-07-20 2 views
0

약어에서 상태 이름을 줄이기 위해 정규 표현식을 만들려고합니다. 예를 들어, "New York"문자열은 "NY"로 대체되어야합니다.iOS에서 글로벌 검색으로 정규식을 작성하는 방법은 무엇입니까?

/[^[A-Z]/g과 함께 제공됩니다. 나는 그것을 여기에서 시험했다 : http://regexr.com 그리고 그것은 작동한다!

objective-c 코드로 작성하면 작동하지 않습니다.

NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^A-Z]/g" options:NSRegularExpressionCaseInsensitive error:&error]; 

NSString *abbreviation = [regex stringByReplacingMatchesInString:self.state options:0 range:NSMakeRange(0, [self.state length]) withTemplate:@""]; 

정규 표현식에 익숙하지 않습니다. 왜 작동하지 않는거야? (바보 같은 실수 일 수는 있지만 찾을 수는 없습니다.)

+0

코드가 일치 문자열을 비워 둡니다. * UF –

+0

의 값은 무엇입니까? 최선의 이해를 돕기 위해 질문을 편집했습니다. – ikkarion

+1

"나는 그것을 여기에서 시험했다 : http://regexr.com 그리고 그것은 작동한다!" 예,하지만 정규식은 맛이 있습니다. 너는 틀린 취향을 시험했다. :) – matt

답변

2

무엇이 \g 인가요? 옵션 0@"[^A-Z]" 또는 @"[^A-Z]+"을 시도해보십시오 검색하거나 대체하는 정규 표현식을 사용하여 아이폰 OS에서

정말 욕심, 검색하거나 범위를 교체하는 것은 정규식 함수의 매개 변수에 range에 달려있다.

NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^A-Z]" options:0 error:&error]; // or @"[^A-Z]+" 

NSString *UF = [regex stringByReplacingMatchesInString:@"New York" options:0 range:NSMakeRange(0, [@"New York" length]) withTemplate:@""]; 
+0

답변 주셔서 감사합니다. @ "[^ A-Z] +"가 작동합니다! 나는/g가 무엇을 의미하는지 생각하지 않습니다. 나는 그것이 검색의 상태를 '저장'한다는 것을 알고 있습니다. – ikkarion

+1

@ikkarion 예 \ g는 다른 언어로 된 글로벌 검색입니다. iOS에서는 작동하지 않습니다. – larva

관련 문제