NSString에서 문자를 제거 하시겠습니까?


95
NSString *myString = @"A B C D E F G";

공백을 제거하고 싶으므로 새 문자열은 "ABCDEFG"가됩니다.

답변:


280

다음을 사용할 수 있습니다.

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];

가독성을 위해 모노 스페이스 글꼴로 코드 스 니펫의 형식을 지정할 수 있습니다. 현재 첫 번째 현을 구별하는 것은 약간 까다 롭습니다
Mike Abdullah

4
"occurrences"의 철자는 두 개의 r로 표시됩니다.

플러스 256 SMH에 도달하기를 희망하는 1
윌 폰 울리히을

이것은 '공백'이 잘 작동하는 ASCII 값 = 32 (% 20) 문자 인 경우에만 작동합니다. 가능한 모든 공백 문자를 제거하려면 아래 Jim Dovey의 솔루션을 사용하십시오.
Linasses

80

한 번에 둘 이상의 공백을 지원하거나 공백을 지원하려면 다음을 수행하십시오.

NSString* noSpaces =
    [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                           componentsJoinedByString:@""];

5
일반적인 사용에 더 유용합니다.
mxg 2011 년

나는 그것을 좋아한다! 전화 번호의 모든 특수 문자를 제거하고 숫자 만 유지하고 싶습니다.
카림

훨씬 쉽게 : yourString = [yourString stringByTrimmingCharactersInSet : [NSCharacterSet whitespaceCharacterSet]];
Daniel

3
트리밍은 문자열의 시작과 끝에서 일치하는 문자 만 제거하므로`ABCDEF`는 A B C D E F.
Jim Dovey

11

NSString 에서 가져옴

stringByReplacingOccurrencesOfString:withString:

수신자에서 대상 문자열의 모든 발생이 다른 지정된 문자열로 대체되는 새 문자열을 반환합니다.

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

매개 변수

표적

The string to replace.

바꿔 놓음

The string with which to replace target.

반환 값

수신자의 모든 target 항목이 대체로 대체되는 새 문자열입니다.


11

위의 모든 것이 잘 작동합니다. 그러나 올바른 방법은 다음과 같습니다.

yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

TRIM 방법처럼 작동합니다. 모든 앞뒤 공간을 제거합니다.

감사


7
아니요, 다른 문자 사이의 공백이 아니라 문자열의 시작과 끝에서 공백 만 제거합니다.
Jim Dovey

@JimDovey 나는 이미 내 의견에서 이것을 언급했습니다. # TRIM 방식처럼 작동합니다. 모든 앞뒤 공간을 제거합니다. #
Mitesh Khatri

2
@MiteshKhatri 그렇게했지만 여전히 원래 문제를 해결하지 못합니다. 이는 선행 및 후행 공백뿐만 아니라 문자열 중간 내에서 모든 공백을 제거하는 것입니다.
Jim Dovey

모든 공백을 제거하려면 @JimDovey 코드를 사용하십시오. MyStr = [MyStr stringByReplacingOccurrencesOfString : @ ""withString : @ ""];
Mitesh 카트리

1
여전히 ASCII 공백 문자 만 제거됩니다. 너비가 0 인 공백, 유니 코드 구분되지 않는 공백, 줄 바꿈, 양식 피드, 탭, 세로 탭 등과 같은 항목은 여전히 ​​문자열에 남아 있습니다. 따라서 [NSCharacterSet whitespaceCharacterSet]및 의 존재 [NSCharacterSet whitespaceAndNewlineCharacterSet].
Jim Dovey 2016

6

문자열이 mutable 이면 다음 형식을 사용하여 제자리에서 변환 할 수 있습니다.

[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

결과가 입력 문자열의 변경 가능한 인스턴스가되기를 원하는 경우에도 유용합니다.

NSMutableString * string = [concreteString mutableCopy];
[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

3

당신은 이것을 시도 할 수 있습니다

- (NSString *)stripRemoveSpaceFrom:(NSString *)str {
    while ([str rangeOfString:@"  "].location != NSNotFound) {
        str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    }
    return str;
}

이것이 당신을 도울 수 있기를 바랍니다.

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