如何创建一个在字符串中交换3个字符的函数?

时间:2017-03-08 21:07:49

标签: swift string

例如,如果我有一个字符串RedSox并想将其更改为SoxRed? 我认为它会是这样的:

     func swapString (String: String) -> String {

  var stringReplaced = String

  var result = stringReplaced.Select(x=> x == 'A' ? 'B' : (x=='B' ? "A" : x)).ToArray()

  stringReplaced = String(result)

    return stringReplaced
  }

2 个答案:

答案 0 :(得分:0)

这个函数接受一个字符串的最后3个字符并将它们附加到开头,肯定没有那么冗长的方法,但是它有效。如果传递带<的字符串,它将抛出一个错误3个字符。

import UIKit

let string = "RedSox"


func changeString ( _ string : String) -> String {
    var characters : Array<Character> = []
    for character in string.characters {
        characters.append(character)
    }

    var characters2 : Array<Character> = []
    var position = characters.count - 3

    while position < characters.count {
         characters2.append(characters[position])
         position += 1
    }

    characters.removeLast()
    characters.removeLast()
    characters.removeLast()
    characters2.append(contentsOf: characters)
    return (String(characters2))
}


var newString = changeString(string)
print (newString)

答案 1 :(得分:0)

只需使用String类已提供的方法即可。 将这些“辅助”方法放在扩展中总是一个好主意。

// Define String extension
extension String {

    func swappedString(count swapCount: Int) -> String {
        guard self.characters.count > swapCount else {
            return self
        }

        let index = self.index(self.endIndex, offsetBy: -swapCount)
        let first = self.substring(from: index)
        let second = self.substring(to: index)

        return first + second
    }
}

// Use it
"RedSox".swappedString(count: 3) //= SoxRed