如何根据字符串A查找字符串B缺失字符并将其添加到字符串B?

时间:2018-06-07 19:55:05

标签: swift string

我有2个字符串。

var stringA = "LetDoItNow"
var stringB = "LetDo"

有没有办法可以根据字符串A找到不在字符串B中的字符,并将它们添加到字符串B中,以便存在于字符串A中?如果他们是平等的,则不需要采取任何行动。

stringA始终包含stringA完全按顺序排列的所有stringB字符。  另一个例子是

var stringA = “GoodMorning”
var stringB = “GoodM”

stringB将始终遵循stringA顺序,但可能缺少一些stringA字符。字符串B永远不会是这样的

var stringB = “Morning”

第一种情况中缺少的字符是" ItNow"检查后我的预期结果是

stringB = "LetDoItNow"

我希望丢失字符,以便我可以运行此代码 stringB + =“missingCharacters” 非常感谢你!

3 个答案:

答案 0 :(得分:1)

您可以使用stringA.components(separatedBy

 var stringA = "LetDoItNow"
    var stringB = "LetDo"


    if stringA.count > stringB.count {
        let component =  stringA.components(separatedBy: stringB)
        if component.count > 1{
            stringB = stringB+component[1]
        }
    }

        print(stringB)

您可以更好地配置它以制作通用解决方案

答案 1 :(得分:0)

使用字典 - 在字符串B中存储所有字符和匹配项,然后比较字符串A并添加您缺少的字符。

func letdoitnow() {
    var dict = [Character:Int]()
    for each in stringB {
        dict[each] = (dict[each] ?? 0) + 1
    }

    for each in stringA {
        dict[each] = (dict[each] ?? 0) - 1
        if dict[each]! < 0 {
            b += String(each)
        }
    }
}

这并不关心顺序 - 不确定这对你是否重要

答案 2 :(得分:0)

如果您要添加stringA但不在stringBStringB缺少字符,那么您可以使用以下功能:

private func addMissingCharacters(stringA: String, stringB: String) -> String {
    if stringA == stringB {
        return stringA
    }

    var result = stringB
    for charachter in stringA {
        if !stringB.contains(charachter) {
            result.append(charachter)
        }
    }

    return result
}

以下是一个用法示例:

let stringA = "LetDoItNow"
let stringB = "LetDo"

let result = addMissingCharacters(stringA: stringA, stringB: stringB)
print("Result: \(result)") // Will print: LetDoINw

正如你所看到的,结果是“LetDoINw”而不是“LetDoItNow”,因为“It”的“t”和“Now”的“o”在stringB中,所以它们不会被添加试。