Objective-C의 문자열에서 공백 제거


답변:


219

NSString 클래스에는 그 방법이 있습니다. 확인하십시오 stringByTrimmingCharactersInSet:(NSCharacterSet *)set. [NSCharacterSet whitespaceCharacterSet]매개 변수로 사용해야합니다 .

NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

4
이것은 또한 후행 공백을 제거 할 것입니다 (바람직 할 수도 있고 바람직하지 않을 수도 있습니다. (원래 질문은 처음부터 제거하도록 요청합니다).)
lnafziger

2
stringByTrimmingCharactersInSet문자열의 시작과 끝에서만 문자를 제거하고 중간에있는 문자는 제거하지 않습니다. 문자열 중간의 공백을 제거하려는 경우 [yourString stringByReplacingOccurrencesOfString:@" " withString:@""].
Arnab

76

다음 과 같이 whitespaceAndNewlineCharacterSet NSCharacterSet 과 함께 stringByTrimmingCharactersInSet NSString 메서드를 사용할 수 있습니다 .

NSString *testString = @"  Eek! There are leading and trailing spaces  ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
                             [NSCharacterSet whitespaceAndNewlineCharacterSet]];

4
+1은 whitespaceCharacterSet이 아닌 whitespaceAndNewlineCharacterSet을 권장합니다.
Rik Smith-Unna

1
-1 애플에 줄 바꿈을 포함하지에 공백을 재정의에 대한 (그들은 새로운 inlineWhitespaceCharacterSet 대신 했어야)
AlexChaffee

이것은 또한 후행 공백을 제거 할 것입니다 (바람직 할 수도 있고 바람직하지 않을 수도 있습니다. (원래 질문은 처음부터 제거하도록 요청합니다).)
lnafziger

7

작성해야하는 코드의 양을 줄이기 위해 빠른 매크로를 작성했습니다.

1 단계 : 앱의 PCH 파일을 편집합니다. 이름은 Project-Name-Prefix.pch 여야합니다.

#define TRIM(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]

2 단계 : 문자열을 다듬고 싶을 때 코드를 적게 작성하세요.

NSLog(@"Output: %@ %@", TRIM(@"Hello        "), TRIM(@"World      "));

Output: Hello World

6

이렇게하면 선행 공백 만 제거됩니다.

NSString *myString = @"   123   ";
NSLog(@"mystring %@, length %d",myString, myString.length);
NSRange range = [myString rangeOfString:@"^\\s*" options:NSRegularExpressionSearch];
myString = [myString stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"mystring %@, length %d",myString, myString.length);

산출

mystring    123   , length 9
mystring 123   , length 6
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.