我有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” 非常感谢你!
答案 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
但不在stringB
到StringB
的缺少字符,那么您可以使用以下功能:
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
中,所以它们不会被添加试。