【问题标题】:How do I replace an item in array with another item in a different array?如何用不同数组中的另一个项目替换数组中的一个项目?
【发布时间】:2016-07-01 05:24:30
【问题描述】:

我知道替换字符串中的项目的基本方法,但现在我是如何做到的。这是我的代码。我正在尝试在笔记中搜索某些单词,并在找到它们时将它们换掉。我有某些单词可以替换其他某些单词,我需要将它们匹配起来,这样句子仍然有意义。

func searchNote1()
{
    let contentArr = note1.content.componentsSeparatedByString(" ")
    let count = contentArr.count
    var num = 0
    while num < count
    {
        if conciseArr.contains(contentArr[num])
        {
            contentArr[num] = conciseArr []
        }
        num += 1
    }
}

我正在尝试替换 contentArr[num] 中的字符串(无论在哪里找到某个单词)并将其替换为在 conciseArr 中找到的字符串。我卡住的地方是我如何知道 conciseArr 中单词的位置来替换另一个单词?

【问题讨论】:

    标签: arrays swift string replace


    【解决方案1】:

    查看 indexOfObject 而不是 .contains。 如果对象存在于 conciseArray 中,你会得到索引(位置),否则你会得到一个 NSNotFound。 然后,如果 (location != NSNotFound)...(使用已知索引进行交换)

    而且,当我们这样做时,也许快速枚举在这里是合适的? (我是一个 Obj-C 人;我希望我的 Swift 语法是正确的!)

    func searchNote1()
    {
        let contentArr = note1.content.componentsSeparatedByString(" ")
        for (index, element) in contentArr.enumerate()
        {
            var location = conciseArr.indexOfObject(element)
            if (location != NSNotFound)
            {
                contentArr[index] = conciseArr[location]
            }
        }
    }
    

    【讨论】:

    • 这暂时有效。现在,当函数必须在一个句子中替换多个单词时,它就会变成一个大杂烩。关于如何解决这个问题的任何想法?
    • 我需要查看输入和输出以了解发生了什么。
    • 这里有什么方法可以私信吗?如果没有必要,我不想发布另一个问题。
    • @SethRodgers 我认为没有 PM。您不需要发布另一个问题,只需在此处输入一些示例数据和您的结果,我会修复我的答案来解决您的问题。
    【解决方案2】:

    这应该可以帮助你:

    if conciseArr.contains(contentArr[num])
            {
                contentArr[num] = conciseArr.indexOf(contentArr[num])
            }
    

    【讨论】:

      【解决方案3】:

      给定一个句子和同义词词典

      let sentence = "What a wonderful world"
      let synonyms = ["wonderful":"beautiful", "world":"planet"]
      

      这就是你如何用同义词得到一个新句子

      let newSentence = sentence
          .componentsSeparatedByString(" ")
          .map { synonyms[$0] ?? $0 }
          .joinWithSeparator(" ")
      

      就是这样

      print(newSentence) // What a beautiful planet
      

      【讨论】:

        猜你喜欢
        • 2020-02-15
        • 2014-02-11
        • 2019-05-17
        • 2015-03-10
        • 2022-07-18
        • 1970-01-01
        • 1970-01-01
        • 2020-01-13
        • 2017-03-12
        相关资源
        最近更新 更多