string - 在 Swift 中索引字符串

标签 string swift

我试图找出 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/

相关文章:

java - 如何根据字符串位置读取文件并将其存储在变量中

string - 如何在 Haskell 中制作开始/结束索引列表?

ios - 从 AppDelegate 呈现一个 ViewController,它显示出来但导航栏未激活,我无法从那里转换到任何其他 View

ios - Xcode 6 - UIKeyboardDidShowNotification 无法识别的选择器

ios - Swift 中开关盒的详尽条件

c++ - 为什么我的 "string mingling"方法返回意外结果?

c# - 如何多次检查一个字符串是否存在某种模式?

string - 如何在 forEach 循环中连接 JSTL 中的字符串?

ios - 如何在 iOS Swift 3.1 中将 32 个字节的数据转换为 32 个字符长度的字符串?

ios - 在 Swift 中使用更新函数的更清洁(更好)替代方法