다음 예를 고려하십시오.
" Hello this is a long string! "
나는 그것을 다음과 같이 변환하고 싶다.
"Hello this is a long string!"
답변
OS X 10.7 이상 및 iOS 3.2 이상
hfossli에서 제공 하는 기본 regexp 솔루션을 사용하십시오 .
그렇지 않으면
좋아하는 regexp 라이브러리를 사용하거나 다음 Cocoa 네이티브 솔루션을 사용하십시오.
NSString *theString = @" Hello this is a long string! ";
NSCharacterSet *whitespaces = [NSCharacterSet whitespaceCharacterSet];
NSPredicate *noEmptyStrings = [NSPredicate predicateWithFormat:@"SELF != ''"];
NSArray *parts = [theString componentsSeparatedByCharactersInSet:whitespaces];
NSArray *filteredArray = [parts filteredArrayUsingPredicate:noEmptyStrings];
theString = [filteredArray componentsJoinedByString:@" "];
답변
Regex와 NSCharacterSet이 도움을드립니다. 이 솔루션은 선행 및 후행 공백과 여러 공백을 제거합니다.
NSString *original = @" Hello this is a long string! ";
NSString *squashed = [original stringByReplacingOccurrencesOfString:@"[ ]+"
withString:@" "
options:NSRegularExpressionSearch
range:NSMakeRange(0, original.length)];
NSString *final = [squashed stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
로깅 final
은
"Hello this is a long string!"
가능한 대체 정규식 패턴 :
- 공백 만 교체 :
[ ]+
- 공백 및 탭 교체 :
[ \\t]+
- 공백, 탭 및 줄 바꿈 바꾸기 :
\\s+
- 이 솔루션 : 7.6 초
- 분할, 필터링, 결합 (Georg Schölly) : 13.7 초
손쉬운 확장, 성능, 코드 라인 수 및 생성 된 개체 수가이 솔루션에 적합합니다.
답변
사실, 그것에 대한 매우 간단한 해결책이 있습니다.
NSString *string = @" spaces in front and at the end ";
NSString *trimmedString = [string stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"%@", trimmedString)
( 출처 )
답변
정규식을 사용하지만 외부 프레임 워크가 필요하지 않습니다.
NSString *theString = @" Hello this is a long string! ";
theString = [theString stringByReplacingOccurrencesOfString:@" +" withString:@" "
options:NSRegularExpressionSearch
range:NSMakeRange(0, theString.length)];
답변
한 줄 솔루션 :
NSString *whitespaceString = @" String with whitespaces ";
NSString *trimmedString = [whitespaceString
stringByReplacingOccurrencesOfString:@" " withString:@""];
답변
그래야만 …
NSString *s = @"this is a string with lots of white space";
NSArray *comps = [s componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSMutableArray *words = [NSMutableArray array];
for(NSString *comp in comps) {
if([comp length] > 1)) {
[words addObject:comp];
}
}
NSString *result = [words componentsJoinedByString:@" "];
답변
regex에 대한 또 다른 옵션은 RegexKitLite 이며 iPhone 프로젝트에 포함하기가 매우 쉽습니다.
[theString stringByReplacingOccurencesOfRegex:@" +" withString:@" "];