【发布时间】:2018-10-22 20:30:37
【问题描述】:
我看到的错误是标题:Cannot invoke 'append' with an argument list of type '(Range<String.Index>)'
在 Swift 中练习字符串交错时,我试图将一个字符串的子字符串附加到另一个字符串。 This other question covers 将一个字符串附加到另一个字符串,这不是我的问题。 And this other question 是一个完全不同的错误。 The Swift documentation on Strings and Characters 似乎不包括将子字符串附加到字符串。
这一行(和类似的行)会引发错误。
result.append(str2.index(after: str2Index)..<str2.endIndex)
如何解决这个问题并将子字符串附加到字符串中?
var str1 = "abcde"
var str2 = "fgh"
print(str1) // prints 'abcde'
print(str2) // prints 'fgd'
var str1Index = str1.startIndex
var str2Index = str2.startIndex
var result = String()
var resultIndex = result.startIndex
while str1Index != str1.endIndex && str2Index != str2.endIndex {
result.insert(str1[str1Index],at: resultIndex)
str1Index = str1.index(after: str1Index)
resultIndex = result.index(after: resultIndex)
result.insert(str2[str2Index], at: resultIndex)
resultIndex = result.index(after: resultIndex)
str2Index = str2.index(after: str2Index)
}
if str1Index != str1.endIndex {
// This does not work, throws above mentioned error
result.append(str2.index(after: str2Index)..<str2.endIndex)
} else if str2Index != str2.endIndex {
// This does not work, throws above mentioned error
result.append(str1.index(after: str1Index)..<str1.endIndex)
}
print(result) // should print 'afbgchde'
对我的算法的 PS、更正或 cmets 也表示赞赏 :)
【问题讨论】:
-
是否需要将 Range 转换为 NSRange?
-
您看到的错误是什么?
-
@Caleb 我看到的错误是问题的标题
-
为什么要投反对票?我对 cmets 有响应,关于 SO 的很多好问题都使用错误消息作为问题标题
-
请阅读错误信息。
result是String和index(after返回Range<String.Index>。这是类型不匹配。
标签: swift string substring interleave