name
INSERT INTO target (column list)
SELECT column list
FROM source
LEFT JOIN target
ON target.name = source.name
WHERE target.name IS NULL
или
INSERT INTO target (<column list>)
SELECT <column list> FROM source
WHERE NOT EXISTS (
SELECT * from target
WHERE target.name = source.name
)
Я полагаю, у вас есть строка, подобная этой
let string = """
"Who composed the
popular song "Aati Kya
Khandala" from 'Ghulam"?
Jatin- Lalit
Abhijeet
Aamir Khan"
"""
или подобная
let string = """
"Who composed the\npopular song "Aati Kya\nKhandala" from 'Ghulam"?\nJatin- Lalit\nAbhijeet\nAamir Khan"
"""
Итак, сначала разделите вашу строку на массив строк
var separated = string.components(separatedBy: "\n")
[1110 ] затем вставьте новую строку в индекс, где вам нужно
separated.insert("sagarduhanishere", at: separated.endIndex - 3)
, а затем просто присоедините этот массив обратно к одной строке
let joined = separated.joined(separator: "\n")
var separated = string.components(separatedBy: "\n")
separated.insert("sagarduhanishere", at: separated.endIndex - 3)
let joined = separated.joined(separator: "\n")
print(joined)
[116 ]
blockquote>
Принятый ответ отлично работает для коротких строк. Для лучшей пространственной (и временной) сложности вы можете избежать ненужного разбиения строки и объединения всех элементов массива следующим образом:
Давайте начнем с этого текста:
let text = """
Who composed the
popular song "Aati Kya
Khandala" from 'Ghulam"?
Jatin- Lalit
Abhijeet
Aamir Khan
"""
результат будет сохранен в этой переменной:
var result = ""
С кодом belo мы ищем третий \n
, начиная с конца исходной строки:
let start = text.startIndex
let end = text.endIndex
var index = text.index(end, offsetBy: -1)
var linesToGo = 3
while start < index {
if text[index] == "\n" {
linesToGo -= 1
}
if linesToGo == 0 {
index = text.index(index, offsetBy: 1)
result = text[start..<index] + "sagarduhanishere\n" + text[index..<end]
break
}
index = text.index(index, offsetBy: -1)
}
И затем мы можете проверить, нашли ли мы 3 строки или нет
if linesToGo != 0 {
fatalError("More lines needed")
}
Затем напечатайте результат или используйте его в своем коде:
print(result)
, который выдает:
[115 ] blockquote>
Вот способ регулярных выражений. Это другой выбор.
let s = """
Who composed the
popular song "Aati Kya
Khandala" from 'Ghulam"?
Jatin- Lalit
Abhijeet
Aamir Khan
"""
let replaceString = "sagarduhanishere"
let nextS = s.replacingOccurrences(of: "(\n.*){3}$", with: "\n\(replaceString)[110]", options: .regularExpression , range: nil)
print(nextS)