[string] 문자열에서 모든 선행 공백을 어떻게 제거해야합니까? – 빠른

공백 인 문자열에서 첫 번째 문자를 제거하는 방법이 필요합니다. 문자열의 문자를 잘라내는 데 사용할 수있는 문자열 유형의 메소드 또는 확장을 찾고 있습니다.



답변

선행 및 후행 공백을 제거하려면

let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

스위프트 3 / 스위프트 4 :

let trimmedString = string.trimmingCharacters(in: .whitespaces)


답변

모든 종류의 공백을 제거하려는 올바른 방법은 ( 이 SO 답변에 따라 ) 다음과 같습니다.

extension String {
    var stringByRemovingWhitespaces: String {
        let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
        return components.joinWithSeparator("")
    }
}

스위프트 3.0+ (3.0, 3.1, 3.2, 4.0)

extension String {
    func removingWhitespaces() -> String {
        return components(separatedBy: .whitespaces).joined()
    }
}

편집하다

이 대답은 모든 공백을 제거하는 것에 관한 질문 일 때 게시되었으며 공백은 언급하도록 편집되었습니다. 선행 공백 만 제거하려면 다음을 사용하십시오.

extension String {
    func removingLeadingSpaces() -> String {
        guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
            return self
        }
        return String(self[index...])
    }
}


답변

이 문자열 확장은 후행 공백뿐만 아니라 문자열에서 모든 공백을 제거합니다 …

 extension String {
    func replace(string:String, replacement:String) -> String {
        return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
    }

    func removeWhitespace() -> String {
        return self.replace(string: " ", replacement: "")
    }
  }

예:

let string = "The quick brown dog jumps over the foxy lady."
let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady.


답변

스위프트 3

이 방법을 사용하면 문자열에서 모든 일반 공백 을 제거 할 수 있습니다 (모든 유형의 공백은 고려하지 않음).

let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")

결과는 다음과 같습니다.

HelloWorld!


답변

정규식을 사용할 수도 있습니다.

let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)


답변

Swift 3.0+의 경우 다른 답변을 참조하십시오. 이것은 이제 Swift 2.x의 레거시 답변입니다.

위에서 대답했듯이 첫 번째 문자를 제거하는 데 관심이 있기 때문에 .stringByTrimmingCharactersInSet () 인스턴스 메소드는 훌륭하게 작동합니다.

myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

다음과 같은 방법으로 문자열 경계를 자르도록 고유 한 문자 집합을 만들 수도 있습니다.

myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))

또한 stringByReplacingOccurrencesOfString (target : String, replacement : String) 이라는 하위 문자열을 제거하거나 교체하는 데 사용할 수있는 내장 인스턴스 메소드가 있습니다. 문자열의 어느 곳에서나 발생하는 공백이나 다른 패턴을 제거 할 수 있습니다.

옵션과 범위를 지정할 수 있지만 다음을 수행 할 필요는 없습니다.

myString.stringByReplacingOccurrencesOfString(" ", withString: "")

이것은 문자열에서 반복되는 문자 패턴을 제거하거나 바꾸는 쉬운 방법이며, 매번 전체 문자열을 다시 통과해야하므로 효율성을 떨어 뜨릴 수 있지만 연결될 수 있습니다. 그래서 당신은 이것을 할 수 있습니다 :

 myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")

…하지만 두 배나 오래 걸릴 것입니다.

Apple 사이트의 .stringByReplacingOccurrencesOfString () 문서

이러한 String 인스턴스 메소드를 체인화하는 것은 단 한 번의 변환에 매우 편리 할 수 ​​있습니다. 예를 들어 짧은 NSData BLOB을 한 줄에 공백이없는 16 진 문자열로 변환하려는 경우 Swift의 내장 문자열 보간 및 일부 트리밍을 사용하여이 작업을 수행 할 수 있습니다. 교체 :

("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")


답변

대한 신속한 3.0

import Foundation

var str = " Hear me calling"

extension String {
    var stringByRemovingWhitespaces: String {
        return components(separatedBy: .whitespaces).joined()
    }
}

str.stringByRemovingWhitespaces  // Hearmecalling