[swift] Swift String에서 문자를 바꾸는 방법은 무엇입니까?

Swift에서 문자를 바꾸는 방법을 찾고 String있습니다.

예 : “이것은 내 문자열입니다”

“This + is + my + string”을 얻기 위해 “”를 “+”로 바꾸고 싶습니다.

어떻게하면 되나요?



답변

이 답변은 Swift 4 & 5 용 으로 업데이트 되었습니다 . 여전히 Swift 1, 2 또는 3을 사용중인 경우 개정 내역을 참조하십시오.

몇 가지 옵션이 있습니다. @jaumard가 제안 하고 사용 하는 것처럼 할 수 있습니다.replacingOccurrences()

let aString = "This is my string"
let newString = aString.replacingOccurrences(of: " ", with: "+", options: .literal, range: nil)

아래 @cprcrack에서 언급했듯이 optionsrange매개 변수는 선택 사항이므로 문자열 비교 옵션이나 범위 내에서 교체를 수행하지 않으려는 경우 다음이 필요합니다.

let aString = "This is my string"
let newString = aString.replacingOccurrences(of: " ", with: "+")

또는 데이터가 이와 같은 특정 형식 인 경우 분리 문자를 바꾸는 components()경우 문자열을 배열로 나누고 join()함수를 사용하여 지정된 구분 기호와 함께 다시 넣을 수 있습니다. .

let toArray = aString.components(separatedBy: " ")
let backToString = toArray.joined(separator: "+")

또는 NSString의 API를 사용하지 않는 Swifty 솔루션을 찾고 있다면 이것을 사용할 수 있습니다.

let aString = "Some search text"

let replaced = String(aString.map {
    $0 == " " ? "+" : $0
})


답변

이것을 사용할 수 있습니다 :

let s = "This is my string"
let modified = s.replace(" ", withString:"+")    

코드의 어느 곳에 나이 확장 방법을 추가하면 :

extension String
{
    func replace(target: String, withString: String) -> String
    {
       return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.LiteralSearch, range: nil)
    }
}

스위프트 3 :

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


답변

스위프트 3, 스위프트 4, 스위프트 5 솔루션

let exampleString = "Example string"

//Solution suggested above in Swift 3.0
let stringToArray = exampleString.components(separatedBy: " ")
let stringFromArray = stringToArray.joined(separator: "+")

//Swiftiest solution
let swiftyString = exampleString.replacingOccurrences(of: " ", with: "+")


답변

이것을 테스트 했습니까?

var test = "This is my string"

let replaced = test.stringByReplacingOccurrencesOfString(" ", withString: "+", options: nil, range: nil)


답변

스위프트 4 :

let abc = "Hello world"

let result = abc.replacingOccurrences(of: " ", with: "_",
    options: NSString.CompareOptions.literal, range:nil)

print(result :\(result))

산출:

result : Hello_world


답변

이 확장명을 사용하고 있습니다 :

extension String {

    func replaceCharacters(characters: String, toSeparator: String) -> String {
        let characterSet = NSCharacterSet(charactersInString: characters)
        let components = self.componentsSeparatedByCharactersInSet(characterSet)
        let result = components.joinWithSeparator("")
        return result
    }

    func wipeCharacters(characters: String) -> String {
        return self.replaceCharacters(characters, toSeparator: "")
    }
}

용법:

let token = "<34353 43434>"
token.replaceCharacters("< >", toString:"+")


답변

Sunkas 라인에 따른 Swift 3 솔루션 :

extension String {
    mutating func replace(_ originalString:String, with newString:String) {
        self = self.replacingOccurrences(of: originalString, with: newString)
    }
}

사용하다:

var string = "foo!"
string.replace("!", with: "?")
print(string)

산출:

foo?