String im String

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Für solche String-Manipulationen gibt es entsprechende Funktionen, die auf (Sub-)Ranges, also Bereichen, von Strings operieren.

    Beispiel:

    Quellcode

    1. var string = "Da steht ein Schaf aufm Flur."
    2. if let range = string.range(of: "Schaf") {
    3. string.replaceSubrange(range, with: "Pferd")
    4. }
    5. print(string) // "Da steht ein Pferd aufm Flur."

    Ranges und Indices von Strings sind in Swift nicht besonders intuitiv für Anfänger. Ich schätze mal, daß Du damit noch rumkämpfen wirst. :( Aber vielleicht hilft Dir das ja schon mal ein bißchen weiter.
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • Ich dachte es mir schon, dass Du dich falsch ausgedrückt hast.
    - Du kannst das über eine Reguläre Expression lösen
    - oder mit einem HTML (XML) Parser
    - oder selber nach Anfang und Ende suchen und dann den String rausholen
    Da gibt es sicherlich einige Beispiele, suche einfach mal nach swift regex oder swift html parser.
  • Lernen geht am besten in der Praxis ;) Umstieg auf Mac, Xcode und Swift neu :) Kenn halt nur alles von Windoof.
    Kann ich nicht einfach nach einem Teil im String suchen und mir die Position ausgeben lassen ? zB "Da steht ein Pferd aufm Flur (suche nach "ein ") + 5 = Pferd ? Ist doch einfacher.

    LG

    edit//

    @manoh die 3 alternative würde ich nehmen da ich mich mit regex noch null beschäftigt habe. Hab hier zwar n tolles neues Buch von Swift 2 liegen aber irgendwie bringt mich das da nicht weiter :) Ein Beispiel wäre mir sehr hilfreich.
  • vico255 schrieb:

    Kann ich nicht einfach nach einem Teil im String suchen und mir die Position ausgeben lassen ? zB "Da steht ein Pferd aufm Flur (suche nach "ein ") + 5 = Pferd ? Ist doch einfacher.

    Einfacher? Naja. Zumindest hat man dann eben seinen Spaß mit den String-Ranges und -Indices, von dem ich eingangs sprach. :)

    vico255 schrieb:

    Ein Beispiel wäre mir sehr hilfreich.

    Mal auf die Schnelle was zusammengeschustert. Das könnte ungefähr so ausssehen:

    Quellcode

    1. let string = "Da steht ein Pferd aufm Flur."
    2. var resultString: String?
    3. if let range = string.range(of: "ein ") {
    4. let newStartIndex = range.upperBound
    5. let newEndIndex = string.index(newStartIndex, offsetBy: 5)
    6. let newRange = Range<String.Index>(uncheckedBounds: (newStartIndex, newEndIndex))
    7. resultString = string.substring(with: newRange)
    8. }
    9. if resultString != nil {
    10. print(resultString!) // "Pferd"
    11. }
    Alles anzeigen
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • Bin auch nicht wirklich fit mit RegEx, aber irgendwie geht das schon. Hierzu gibt es auch einige Seiten wie regexr.com, die einem da helfen können. RegEx in Sprache x ist nicht unbedingt mit RegEx in Sprach y kompatibel. Viel Unterschied gibt es da aber meistens nicht. Da liest man sich ein Tutorial durch und dann versteht man das (mehr oder weniger). Wenn das Tut nicht für Swift geschrieben ist, dann ist das auch nicht so wild.

    Hast Du jetzt solchen Text Main name ist Hase. oder <obj type="hidden" name="test> vorliegen?
  • vico255 schrieb:

    Kurze Frage.. Wenn ich die Start oder Endposition verändern möchte mach ich das wie? Index + 6 klappt ja nicht :-/

    Das ist ja mein Reden in Sachen "nicht intuitiv für Anfänger".

    Wenn Du Dir meinen letzten Code oben genauer anschaust, wirst Du feststellen, daß da die Antwort schon drinsteht. ;)
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • Okay. Ich will nicht ganz so fies sein und gebe "einen weiteren Tip". ;)

    Der Index in einem String in Swift kommt nicht von außen, sondern ist eine Eigenschaft des Strings selbst. Ein String-Index ist in Swift immer nur 'gültig' für diese eine String-Instanz und kann nur über diese String-Instanz geändert werden...

    In der Praxis z.B.:

    Quellcode

    1. let str = "abcdefghijklmnopqrstuvwxyz"
    2. print(str[str.startIndex]) // "a"
    3. var index = str.index(str.startIndex, offsetBy: 3)
    4. print(str[index]) // "d"
    5. index = str.index(index, offsetBy: 1)
    6. print(str[index]) // "e"

    Klar?
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?