코코아 터치의 문자열에서 공백을 다듬는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/474270

문제

나는 사용자 입력 (UitextField)의 문자열 값이 nil이 아닌 경우 "공백"인지 여부를 결정하려고합니다. 확인하는 경우 [textField.text isEqualToString:""] 빈/공백 입력을 피하고 싶기 때문에 충분하지 않습니다 (공간 문자 몇 마리).

내 특정 문제에 대한 좋은 해결책을 나타내는 것 같습니다. 이 stov 게시물에서.

기본적으로 그것은 이와 같은 일을하지만, 나는 더 나은 방법이되어야한다고 생각합니다.

NSString *strResult;
NSScanner* scanner = [NSScanner scannerWithString:textField.text];
BOOL hasValidChars = [scanner scanUpToCharactersFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet] 
                                             intoString:&strResult];

// if hasValidChars == YES, we've got nonwhite space chars collected into strResult

이것은 내 특정 상황에만 분명히 작동하며, 첫 번째 캐릭터가 공간이지만 내가 원하는 데이터를 따르는 경우에도 실패 할 것입니다. 그래서 나는 루비에 의해 조금 망쳐 졌다는 것을 알고 있지만 코코아에는 현을 다듬기위한 시도하고 진정한 관용구가 있어야합니다.

aaaand 대답은 이미 있습니다. 사과드립니다.

nsstring 's -stringByTrimmingCharactersInSet: 할 것입니다 :

주어진 문자 세트에 포함 된 수신기 문자의 양쪽 끝에서 제거하여 만든 새 문자열을 반환합니다.

다른 사람 이이 작업을 수행하는 다른/선호하는 방법이 있다면 여전히 궁금합니다.

도움이 되었습니까?

해결책

당신은 공백을 사용하고 있습니다. 그러나 scanuptocharactersfromset을 사용하는 대신 StringBytrimmingcharactersinset을 사용하지 않는 이유는 무엇입니까? 이 같은...

strResult = [strResult stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

편집 : 내가 이것을 게시 한 후까지 StringBytrimmingcharactersinset을 이미 발견 한 것을 몰랐습니다.

다른 팁

당신이 찾고있는 것은입니다

[string stringByReplacingOccurrencesOfString:@" " withString:@""].

문자열의 중간에 공백을 삭제하는 것은 '트리밍'이라고합니다.

정의 별 트리밍은 가장자리에서 작동합니다.

이것을 쉽게하고 서브 클래스를 만드는 대신 기존 Apple 클래스를 수정하고 다음과 같은 일을 할 수 있습니다.

//
// NSString+MyExtensions.h
//

@interface NSString (MyExtensions)

- (NSString *)trimmed;

@end

그리고 구현

//
// NSString+MyExtensions.m
//

#import "NSString+MyExtensions.h"

@implementation NSString (MyExtensions)

- (NSString *)trimmed {
     return [self stringByTrimmingCharactersInSet:
             [NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

@end

이제 앱의 어느 곳에서나 사용합니다. NSString,
이제 전화 할 수 있습니다 [@" hello world " trimmed] 아래처럼

//
// ViewController.m
//

#import "NSString+MyExtensions.h"

@implementation ViewController

- (void)viewDidLoad {

    NSString *string = @"      This is a string    ";

    NSLog(@"The original string: %@ \n The trimmed string: %@\n\n",
          string,
          [string trimmed]);

    string = @"                 ";

    if([string trimmed].length == 0)
        NSLog(@"%@", @"String is empty! :O");

}

@end

인쇄 할 것입니다

The original string:       This is a string    
The trimmed string: This is a string

String is empty! :O
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top