2012-08-21 3 views
1

NSString에있는 [URL]을 찾아서 교체하려고합니다.[] 대괄호를 NSString으로 바꾸시겠습니까?

NSString *test = @"Test [URL] 123"; 
test = [test stringByReplacingOccurrencesOfString:@"[URL]" 
             withString:@"HERE" 
              options:NSRegularExpressionSearch 
              range:NSMakeRange(0, test.length)]; 

이의 결과는 Test [HEREHEREHERE] 123입니다 : 이것은 나의 접근 방식입니다. [URL]은 3 문자 중 하나를 의미하므로 3 문자가 차례로 HERE으로 바뀌므로 그럴 것 같습니다.

그러나 나는 또한 \[URL\]과 같은 결과를 보았습니다.

그럼 실제로 문자 []을 어떻게 검색합니까? 대괄호는 정규 표현식 언어의 메타 문자, 그래서 그들은 해석받을 :

+1

는 당신이 더 문제를 정의 할 수 @"\\[URL\\]" : 그들은 목표 - C와 정규 표현식 언어 모두에서 특수 문자이기 때문에

당신은 당신의 슬래시 - 탈출을 두 번해야합니까? 문자 그대로'@ "[URL]"'문자열을 바꾸려면 왜 정규 표현식을 사용하고 있습니까? –

+0

왜냐하면 나중에'[URL = http : /some.url.com]'과 같을 것이기 때문입니다. – DrummerB

+0

좋아, 그러면 일치하려는 대상을 완전히 정의 할 수 있습니까? 정규식을 작성할 때 문제를 올바르게 정의해야하거나 작동하지 않는 엣지 케이스가있을 수 있습니다. –

답변

5

당신은 당신의 문제를 진단하는 방법에 대한 절대적 권리입니다 :)가 도움이되기를 바랍니다 정규식 엔진.

+0

오, 그런 생각을하지 못했습니다. 감사! – DrummerB

+0

(즉, 정규식 엔진은'\ [URL \]'을 "보게됩니다.") –

+0

감사합니다. – DrummerB

1

대신하려고

test = [test stringByReplacingOccurrencesOfString:@"\\[URL\\]" 
             withString:@"HERE" 
              options:NSRegularExpressionSearch 
              range:NSMakeRange(0, test.length)];