2016-10-20 19 views
0

部分文字列を別の部分文字列に置き換えようとしていますが、このエラー:Swift 3: 'String.Index'型の値を期待される引数型に変換できませんRange(別名Range <String.CharacterView.Index>)

cannot convert value of type 'String.Index' (aka 'String.CharacterView.Index') to expected argument type 'Range<String.Index>' (aka 'Range<String.CharacterView.Index>') 

ここでは私のコードです:

// This are the position of the substrings: 
let rangeOne = strToSort.index(strToSort.startIndex, offsetBy: (i-1)) 
let rangeTwo = strToSort.index(strToSort.startIndex, offsetBy: (i)) 

Here is where I try to make the replacement: 


strToSort = strToSort.replacingCharacters(in: rangeOne, with: strToSort.substring(with: rangeTwo)) 

しかし、私はこのエラーを取得しています:

enter image description here

あなたは、私が間違ってやっていることやこれを回避することを知っていますか?

私は何の範囲に定義はありませんあなたのコードのように

+0

のように異なるStringメソッドを使用できますか? –

+0

'var chars =" EHLLOAGAIN ".characters.map {文字列($ 0)}' 'swap(&chars [0]、&chars [1])' –

+0

@LeoDabusですが、プログラムでどのように行うのですか?私が意味することは、部分文字列が位置yにある位置xにある部分文字列を切り替えるかどうかです。 – user2924482

答えて

1

この

var strToSort = "HELLOAGAIN" 
let rangeOne = strToSort.index(strToSort.startIndex, offsetBy: (2)) 
let rangeTwo = strToSort.index(strToSort.startIndex, offsetBy: (3)) 
let stringRange = Range(uncheckedBounds: (lower: rangeOne, upper: rangeTwo)) 
strToSort = strToSort.replacingCharacters(in: stringRange, with: strToSort) 
print(strToSort) 

のようにコードを修正し、あなたの助けを本当に感謝しますと方法 replacingCharacters はタイプ Range<String.Index>の引数を必要とします とタイプString.Indexが間違っているため、エラーが発生しています。

あなたはEとHのような文字列の出現を交換したい場合は、あなたがHELLOAGAIN` `に` EHLLOAGAIN`を変更したい

let aString: String = "HELLO" 
let newString = aString.stringByReplacingOccurrencesOfString("H", withString: "E", options: NSStringCompareOptions.LiteralSearch, range: nil) 
+0

EをHに置き換えたい場合、どのように範囲を管理できますか?たとえばEHLLOAGAIN? – user2924482

+0

あなたのコメントに応じて私の答えを更新しました –

+0

私がしようとしているのは、値にない文字列の位置にある部分文字列の塩基を置き換えることです。 – user2924482

関連する問題