에서 공백을 제거 NSString
하려고 시도했지만 시도한 방법 중 아무것도 작동하지 않았습니다.
나는 "this is a test"
있고 싶어요 "thisisatest"
.
whitespaceCharacterSet
공백을 제거 해야하는을 사용했습니다 .
NSString *search = [searchbar.text stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
그러나 공백이있는 동일한 문자열을 계속 얻었습니다. 어떤 아이디어?
답변
stringByTrimmingCharactersInSet
문자열의 시작과 끝에서 문자 만 제거하고 중간 문자는 제거하지 않습니다.
1) 문자열에서 주어진 문자 (예 : 공백 문자) 만 제거 해야하는 경우 다음을 사용하십시오.
[yourString stringByReplacingOccurrencesOfString:@" " withString:@""]
2) 문자 집합 (즉, 공백 문자뿐만 아니라 공백, 탭, 깨지지 않는 공백 등의 공백 문자 ) 을 실제로 제거 해야하는 경우 문자열을 분할 whitespaceCharacterSet
한 다음 단어를 한 문자열로 다시 결합 할 수 있습니다 :
NSArray* words = [yourString componentsSeparatedByCharactersInSet :[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString* nospacestring = [words componentsJoinedByString:@""];
이 마지막 솔루션은 공백뿐만 아니라 모든 공백 문자를 처리 할 수 있다는 장점이 있지만 stringByReplacingOccurrencesOfString:withString:
. 따라서 실제로 공백 문자 만 제거해야하고 일반 공백 문자 이외의 다른 공백 문자가없는 경우 첫 번째 방법을 사용하십시오.
답변
다음과 같이 정규식을 사용하는 것이 좋습니다.
NSString *myString = @"this is a test";
NSString *myNewString = [myString stringByReplacingOccurrencesOfString:@"\\s"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, [myStringlength])];
//myNewString will be @"thisisatest"
NSString에서 자신을 범주화하여 인생을 더욱 쉽게 만들 수 있습니다.
- (NSString *) removeAllWhitespace
{
return [self stringByReplacingOccurrencesOfString:@"\\s" withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, [self length])];
}
여기에 단위 테스트 방법이 있습니다.
- (void) testRemoveAllWhitespace
{
NSString *testResult = nil;
NSArray *testStringsArray = @[@""
,@" "
,@" basicTest "
,@" another Test \n"
,@"a b c d e f g"
,@"\n\tA\t\t \t \nB \f C \t ,d,\ve F\r\r\r"
,@" landscape, portrait, ,,,up_side-down ;asdf; lkjfasdf0qi4jr0213 ua;;;;af!@@##$$ %^^ & * * ()+ + "
];
NSArray *expectedResultsArray = @[@""
,@""
,@"basicTest"
,@"anotherTest"
,@"abcdefg"
,@"ABC,d,eF"
,@"landscape,portrait,,,,up_side-down;asdf;lkjfasdf0qi4jr0213ua;;;;af!@@##$$%^^&**()++"
];
for (int i=0; i < [testStringsArray count]; i++)
{
testResult = [testStringsArray[i] removeAllWhitespace];
STAssertTrue([testResult isEqualToString:expectedResultsArray[i]], @"Expected: \"%@\" to become: \"%@\", but result was \"%@\"",
testStringsArray[i], expectedResultsArray[i], testResult);
}
}
답변
사용하기 쉬운 작업 stringByReplacingOccurrencesOfString
NSString *search = [searchbar.text stringByReplacingOccurrencesOfString:@" " withString:@""];
답변
(공백) \u00a0
대신 문제가 발생하는 경우 도움이 될 수 있습니다 . 장치 연락처 전화 번호를 추출하려고 할 때이 문제가 발생했습니다. phoneNumber 문자열에 공백이 없도록 수정해야했습니다.
NSString* yourString = [yourString stringByReplacingOccurrencesOfString:@"\u00a0" withString:@""];
yourString
현재 전화 번호는 언제 였습니다.
답변
stringByReplacingOccurrencesOfString은 모든 공백을 시작 및 끝 이외의 문자열로 바꿉니다.
사용하다
[YourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]
답변
- (NSString *)removeWhitespaces {
return [[self componentsSeparatedByCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]]
componentsJoinedByString:@""];
}
답변
이것은 나를 위해 SWIFT 가장 좋은 방법입니다
let myString = " ciao \n ciao "
var finalString = myString as NSString
for character in myString{
if character == " "{
finalString = finalString.stringByReplacingOccurrencesOfString(" ", withString: "")
}else{
finalString = finalString.stringByReplacingOccurrencesOfString("\n", withString: "")
}
}
println(finalString)
그리고 결과는 : ciaociao
그러나 속임수는 이것입니다!
extension String {
var NoWhiteSpace : String {
var miaStringa = self as NSString
if miaStringa.containsString(" "){
miaStringa = miaStringa.stringByReplacingOccurrencesOfString(" ", withString: "")
}
return miaStringa as String
}
}
let myString = "Ciao Ciao Ciao".NoWhiteSpace //CiaoCiaoCiao
