코코아 터치의 문자열에서 공백을 다듬는 가장 좋은 방법은 무엇입니까?
-
19-08-2019 - |
문제
나는 사용자 입력 (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