Wie kann ich schnell ein neues Wort vor den letzten drei Zeilen in einer Zeichenfolge hinzufügen, damit diese Zeichenfolge daraus konvertiert wird:

"Who composed the\n
popular song "Aati Kya\n
Khandala" from 'Ghulam"?\n
Jatin- Lalit\n
Abhijeet\n
Aamir Khan"

Dazu:

"Who composed the\n
popular song "Aati Kya\n
Khandala" from 'Ghulam"?\n
sagarduhanishere\n
Jatin- Lalit\n
Abhijeet\n
Aamir Khan"
0
ocean hancock 19 Jän. 2019 im 15:29

3 Antworten

Beste Antwort

Die akzeptierte Antwort funktioniert gut für kurze Zeichenfolgen. Um die Komplexität von Raum (und Zeit) zu verbessern, können Sie vermeiden, dass die Zeichenfolge unnötig aufgeteilt und alle Elemente eines Arrays auf folgende Weise wieder zusammengefügt werden:

Beginnen wir mit diesem Text:

let text = """
Who composed the
popular song "Aati Kya
Khandala" from 'Ghulam"?
Jatin- Lalit
Abhijeet
Aamir Khan
"""

Das Ergebnis wird in dieser Variablen gespeichert:

var result = ""

Mit dem Code belo suchen wir nach dem dritten \n ab dem Ende der ursprünglichen Zeichenfolge:

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)
}

Und dann können wir überprüfen, ob wir 3 Zeilen gefunden haben oder nicht

if linesToGo != 0 {
    fatalError("More lines needed")
}

Drucken Sie dann das Ergebnis aus oder verwenden Sie es in Ihrem Code:

print(result)

Welche Ausgänge:

Who composed the
popular song "Aati Kya
Khandala" from 'Ghulam"?
sagarduhanishere
Jatin- Lalit
Abhijeet
Aamir Khan
2
ielyamani 19 Jän. 2019 im 16:18

Ich nehme an, Sie haben eine solche Zeichenfolge

let string = """
    "Who composed the
    popular song "Aati Kya
    Khandala" from 'Ghulam"?
    Jatin- Lalit
    Abhijeet
    Aamir Khan"
"""

Oder so

let string = """
    "Who composed the\npopular song "Aati Kya\nKhandala" from 'Ghulam"?\nJatin- Lalit\nAbhijeet\nAamir Khan"
"""

Trennen Sie also zuerst Ihre Zeichenfolge in ein Array von Zeichenfolgen

var separated = string.components(separatedBy: "\n")

Fügen Sie dann an der gewünschten Stelle eine neue Zeichenfolge in den Index ein

separated.insert("sagarduhanishere", at: separated.endIndex - 3)

Und verbinden Sie dieses Array dann einfach wieder mit einer Zeichenfolge

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)

"Wer hat das komponiert? populäres Lied "Aati Kya Khandala "aus 'Ghulam"? sagarduhanishere Jatin-Lalit Abhijeet Aamir Khan "

3
Robert Dresler 19 Jän. 2019 im 13:04

Hier ist der Regex-Weg. Es ist eine andere Wahl.

        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)$0", options: .regularExpression  , range: nil)

        print(nextS)
2
E.Coms 19 Jän. 2019 im 18:25