Как я могу добавить новое слово перед последними тремя строками в строке в swift?

  1. Загрузите новые строки в промежуточную таблицу.
  2. Индекс вашей промежуточной и целевой таблиц в столбце name
  3. напишите запрос следующим образом: 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
)
-1
задан rmaddy 19 January 2019 в 21:17
поделиться

3 ответа

Я полагаю, у вас есть строка, подобная этой

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 ]

0
ответ дан Robert Dresler 19 January 2019 в 21:17
поделиться

Принятый ответ отлично работает для коротких строк. Для лучшей пространственной (и временной) сложности вы можете избежать ненужного разбиения строки и объединения всех элементов массива следующим образом:

Давайте начнем с этого текста:

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 ]
0
ответ дан ielyamani 19 January 2019 в 21:17
поделиться

Вот способ регулярных выражений. Это другой выбор.

        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)
0
ответ дан E.Coms 19 January 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: