2013-10-28 2 views
0

텍스트 필드에서 사용자가 이스케이프 문자로 값을 입력 할 때 사용자 입력과 동일한 작업을 원하지만 \ e의 문자열처럼 작동합니다.문자열 includin 이스케이프 문자

자세히. 사용자가 \ e [3 ~을 입력했다고 가정 해 봅시다. 그러나 콘솔에서 인쇄 할 때 \ e [3 ~. 실제로 이것은 ¿ [3 ~ 같이 인쇄해야합니다 그래서 나를 위해 완벽하게 작동합니다.

나는이 줄로 시험해 보았다.

NSString * str=[textField.text stringByReplacingOccurrencesOfString:@"\\e" withString:@"\e"]; 

그러나 사용자가 \ E [3 ~ 다음 대용 할 수없는 대문자로 값을 입력한다고 가정 해보십시오. 그래서 같이 시도했습니다

NSString * str=[textField.text stringByReplacingOccurrencesOfString:@"\\e" withString:@"\e"]; 
     str=[textField.text stringByReplacingOccurrencesOfString:@"\\E" withString:@"\E"]; 

그러나 사용자가 텍스트를 작게 입력 한 경우에는 작동하지 않습니다. 이 때 첫 번째 줄이 \ e를 대체하기 위해 실행될 때 [[3 ~과 같은 완벽한 결과를 줄 것이다. 그러나 다음 줄을 실행할 때 같은 줄을 줄 것이다 [3 ~ string.

두 글자를 모두 확인하고 한 번에 이스케이프 문자를 모두 확인할 수 있는지 제안 해주세요.

+0

이 시도 http://stackoverflow.com/questions/19564950을/replace-unicode-value-in-string – user1673099

+0

@ user1673099. 사실 그것은 그 반대의 경우입니다. 이 질문에 설명 된 것과 같은 대답을 거꾸로하고 싶습니다. – Nikunj

답변

1

코드의 오류는 첫 번째 줄의 결과 대신 두 번째 줄에 원래 문자열 textField.text 이 걸리는 것입니다. 당신이 아마 의미하는 것은 : 또는

NSString *str = [textField.text stringByReplacingOccurrencesOfString:@"\\e" withString:@"\e"]; 
str = [str stringByReplacingOccurrencesOfString:@"\\E" withString:@"\E"]; 

, 당신은 NSCaseInsensitiveSearch 옵션을 사용하여 단일 단계에서 교체 작업을 수행 할 수 있습니다

NSString *str = [textField.text stringByReplacingOccurrencesOfString:@"\\e" 
         withString:@"\e" 
          options:NSCaseInsensitiveSearch 
          range:NSMakeRange(0, [textField.text length])]; 
+0

ohh yes 나의 실수. 위의 라인을 작업. 답변 감사합니다. 하나 더 질문 일단 모든 이스케이프 문자를 확인하려면 어떤 생각이 있습니까? – Nikunj

+0

@ OKNC2 : http://stackoverflow.com/questions/19313631/replacing-multiple-characters-in-nsstring-by-multiple-other-characters-using-ad의 코드를 사용하면 여러 대체 코드를 사용할 수 있습니다. 조회 사전. 또는 NSRegularExpression을 사용하여 모든 이스케이프 시퀀스를 검색 할 수 있습니다. –

+0

괜찮은 친구 정말 고마워. – Nikunj