2017-03-08 12 views
-8

たとえば、文字列RedSoxがあり、それをSoxRedに変更したいとしたら? 私はそれはようなものになるだろうと思っています。この機能文字列内の3文字をスワップする関数を作るには?

 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 
    } 
+0

単語に6文字が含まれていないとどうなりますか?もしそれがもっとあれば?それが* less *の場合はどうなりますか? – Sulthan

+0

それは、それは、それは3文字のすべてのペアをスワップされてthatsです – SwiftyJD

+0

ここでの質問は何ですか? – Russell

答えて

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) 
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 
関連する問題