2013-05-24 1 views
0

Special Characters, NumbersDouble Spaces을 문자열에서 제거하려고하지만 모든 공백이 제거됩니다. 어떻게 해결할 수 있습니까?문자열에서 특수 문자, 숫자 및 이중 공백 제거

코드 :

_tfName.text = [[_tfName.text componentsSeparatedByCharactersInSet:[[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@""]; 

문자열 :

Real String   Formated   What I want 
___________   ________   ___________ 
Lincon Man   LiconMan   Licon Man 
Name Surname   NameSurname  Name Surname 
09123721*)(%[email protected]ˆ*# *blank*   *blank* 
+1

귀하의 요구 사항과 다른 방법을 사용하고 있습니다. 정규식을 검색해야합니다. 100s의 답을 찾을 수 있습니다 –

+1

http://stackoverflow.com/questions/713918/replace-multiple-characters-in-a-string-in-objective-c – savner

+0

@LucianoNascimento 아니요, 해당 링크는 Objective- 기음. 이 질문은 PHP에서 무언가를 참조하는 것으로 시작하지만, 그 후에 질문은 Objective-C에서 어떻게해야하는지 묻습니다. 모든 대답은 Objective-C에 있습니다. – rmaddy

답변

1

에 매개 변수로 공백을 전달하는 생각 했나 유효한. 좋은 방법은 두 가지 요구에 NSRegularExpression을 사용하는 것입니다. 하나는 원치 않는 문자를 찾아 제거하고 다른 문자는 이중 공백을 찾아 제거합니다.

이 옵션은 논리를 대부분 다시 사용할 수 있기 때문에이 옵션을 사용하는 것이 좋습니다.

NSScanner를 사용할 수도 있습니다. NSCharacterSet 인수를 : stringByTrimmingCharactersInSet -

당신은 원하지 않는 문자 집합을 만들고있는 NSString 방법 그들을 제거하기 위해 NSCharacterSet를 사용하여 원치 않는 문자 부분을 수행 할 수 있습니다.

NSString에 - stringByReplacingOccurrencesOfString : withString : 두 개의 공백 문자열을 전달할 수 있습니다.

다른 옵션도 있지만 NSRegularExpression은 이중 공백으로 이동하는 방법입니다. NSCharacterSet 접근법은 원하지 않는 문자에 대해 매우 쉽습니다.

0

당신은 당신은 선택의 여지가 componentsJoinedByString:

string = [[string componentsSeparatedByCharactersInSet:[[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@" "];

0

이 당신을 위해 무엇을 찾고있는 수 있습니다 : 제거 어떤 문자 또는 유지하기 위해 어떤 것들을 알고있는 경우

NSRegularExpression *re = [NSRegularExpression regularExpressionWithPattern:@"[@#$.,!\\d]" options:0 error:nil]; 
NSString *input = @"1234 Nöel* *Smith [email protected]"; 
NSString *output = [re stringByReplacingMatchesInString:input 
               options:0 
                range:NSMakeRange(0, [input length]) 
              withTemplate:@""]; 
/* -> Nöel Smith */ 

가 따라이 같은 정규 표현식 또는 [^caracters-to-keep]와 반대를 작성할 수 있습니다. 귀하의 경우에 필요한 메타 문자 만 사용하십시오.

관련 문제