我试图找出 2 个单词(已知它们具有相同的长度并且仅使用罗马字符)有多少个共同点。为此,我有以下代码
var sameplace = 0
for n in 0..<(word1.utf16Count){
if word1[n] == word2[n]{
sameplace += 1
}
}
但是,当我尝试使用 n
索引字符串时出现错误,n
是一个 Int
。具体来说,错误是 'Int' 无法转换为 'String.Index'
。
有没有一种方法可以用 int 索引字符串,而不必每次都先将其转换为 NSString
?我可以让循环生成 n 作为 String.Index
而不是 Int
吗?执行此操作最“swift ”的方法是什么?
最佳答案
一个可能的解决方案甚至可以处理所有类型的 Unicode 字符, 字素簇等:
let word1 = "😄abcd🇩🇪"
let word2 = "😄axcy🇩🇪"
var sameplace = 0
for (c1, c2) in Zip2(word1, word2) {
if c1 == c2 {
sameplace++
}
}
println(sameplace) // 4
Swift String
也是其字符的 Sequence
,并且
Zip2
返回一个序列,该序列并行迭代两个给定序列。
关于string - 在 Swift 中索引字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24974583/