Suchen und ersetzen

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

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Suchen und ersetzen

    Hallo zusammen,

    ich kämpfe gerade mit suchen und ersetzen. Ich möchte in einer kleinen Taschenrechner APP die Eingabe von einem Komma zu einem Punkt ändern damit die Berechnung richtig funktioniert.
    Ich habe replacingOccurrences verwendet, ich bekomme keine Fehlermeldung und es funktioniert nicht und ich verstehe nicht warum :S
    Könnte mich jemand unterstützen und mir dabei helfen?



    Quellcode

    1. @IBAction func berechnenClicked(_ sender: NSButton) {
    2. var zahl1, zahl2: NSString
    3. var ergebnis: Double
    4. ergebnis = 0
    5. zahl1 = eingabeZahl1.stringValue as NSString
    6. zahl2 = eingabeZahl2.stringValue as NSString
    7. zahl1.replacingOccurrences(of: ",", with: ".")
    8. zahl2.replacingOccurrences(of: ",", with: ".")
    9. let operator1 = (zahl1).doubleValue
    10. let operator2 = (zahl2).doubleValue
    11. var divDurchNull = false
    12. if opAddition.state == NSControl.StateValue.on {
    13. ergebnis = operator1 + operator2 }
    14. if opSubstration.state == NSControl.StateValue.on {
    15. ergebnis = operator1 - operator2}
    16. if opMultiplikation.state == NSControl.StateValue.on {
    17. ergebnis = operator1 * operator2}
    18. if opDivision.state == NSControl.StateValue.on {
    19. if operator2 != 0 {
    20. ergebnis = operator1 / operator2
    21. }
    22. else {
    23. divDurchNull = true
    24. }
    25. }
    26. //wenn nicht durch Null dividiert wurde
    27. if divDurchNull == false {
    28. labelErgebnis.doubleValue = ergebnis }
    29. else {
    30. labelErgebnis.stringValue = "Nicht definiert"
    31. }
    32. labelErgebnis.doubleValue = ergebnis
    33. labelErgebnis.sizeToFit()
    34. }
    Alles anzeigen
  • Ich bekomme es irgendwie nicht hin. Kann mir jemand erklären wo ich hier meinen Fehler mache? Entschuldigt bitte das ich es nicht gleich verstehe, ich habe erst damit angefangen.

    Quellcode

    1. var komma: String
    2. var punkt: String
    3. func replacingOccurrences(of: komma, with: punkt){
    4. zahl1.replacingOccurrences(of: ",", with: ".")
    5. zahl2.replacingOccurrences(of: ",", with: ".")
    6. }
    7. replacingOccurrences(of: komma, with: punkt)
  • so bekomme ich jetzt keine Fehlermeldung mehr, aber das Komma wird immer noch nicht durch den Punkt ersetzt ;(

    Quellcode

    1. @IBAction func berechnenClicked(_ sender: NSButton) {
    2. var zahl1, zahl2: NSString
    3. var ergebnis: Double
    4. ergebnis = 0
    5. zahl1 = eingabeZahl1.stringValue as NSString
    6. zahl2 = eingabeZahl2.stringValue as NSString
    7. func replacingOccurrences(){
    8. zahl1.replacingOccurrences(of: ",", with: ".")
    9. zahl2.replacingOccurrences(of: ",", with: ".")
    10. }
    11. replacingOccurrences()
    12. let operator1 = (zahl1).doubleValue
    13. let operator2 = (zahl2).doubleValue
    14. var divDurchNull = false
    15. if opAddition.state == NSControl.StateValue.on {
    16. ergebnis = operator1 + operator2 }
    17. if opSubstration.state == NSControl.StateValue.on {
    18. ergebnis = operator1 - operator2}
    19. if opMultiplikation.state == NSControl.StateValue.on {
    20. ergebnis = operator1 * operator2}
    21. if opDivision.state == NSControl.StateValue.on {
    22. if operator2 != 0 {
    23. ergebnis = operator1 / operator2
    24. }
    25. else {
    26. divDurchNull = true
    27. }
    28. }
    29. //wenn nicht durch Null dividiert wurde
    30. if divDurchNull == false {
    31. labelErgebnis.doubleValue = ergebnis }
    32. else {
    33. labelErgebnis.stringValue = "Nicht definiert"
    34. }
    35. labelErgebnis.doubleValue = ergebnis
    36. labelErgebnis.sizeToFit()
    37. }
    Alles anzeigen
  • Ersetze deine zwei Zeilen:

    Quellcode

    1. zahl1.replacingOccurrences(of: ",", with: ".")
    2. zahl2.replacingOccurrences(of: ",", with: ".")
    mit:

    Quellcode

    1. zahl1 = zahl1.replacingOccurrences(of: ",", with: ".")
    2. zahl2 = zahl2.replacingOccurrences(of: ",", with: ".")
    Du musst keine neue Funktion definieren. Diese besteht bereits. Oberes Zitat ist eine Beschreibung aus der Dokumentation.
  • Tecalto schrieb:

    Ersetze deine zwei Zeilen:

    Quellcode

    1. zahl1.replacingOccurrences(of: ",", with: ".")
    2. zahl2.replacingOccurrences(of: ",", with: ".")
    mit:

    Quellcode

    1. zahl1 = zahl1.replacingOccurrences(of: ",", with: ".")
    2. zahl2 = zahl2.replacingOccurrences(of: ",", with: ".")
    Du musst keine neue Funktion definieren. Diese besteht bereits. Oberes Zitat ist eine Beschreibung aus der Dokumentation.
    Hallo Tecalto,

    danke so macht das Sinn und funktioniert auch :D

    An die anderen Helfer auch vielen Dank. Ich wollte es auch mit der Klasse NumberFormatter erst lösen aber meine Aufgabe hat es mit der Replace Methode vorgesehen.

    Ich danke euch allen für die Unterstützung :thumbsup:
  • Noch ein kleiner Tipp: versuche möglichst auch die Swift-Typen zu verwenden.
    In diesem Fall String statt NSString, denn dann profitierst du von weiteren Hinweisen.

    Ich habe es mal mit folgendem Minibeispiel probiert:

    Quellcode

    1. var zahl1 : NSString
    2. zahl1 = NSString(string: "123,4")
    3. zahl1.replacingOccurrences(of: ",", with: ".")

    Wenn statt NSString String verwendet wird

    Quellcode

    1. var zahl1 : String
    2. zahl1 = "123,4"
    3. zahl1.replacingOccurrences(of: ",", with: ".")

    Gibt es beim Übersetzen eine Warnung zu Zeile 3:

    Result of call to 'replacingOccurrences(of:with:options:range:)' is unused

    Das weist in diesem Fall ganz richtig auf eine potenziell falsche Verwendung hin.


    Ich hatte diesen Test gemacht, weil ich erst sogar bei NSString diese Warnung erwartet hatte.
    Dann habe schnell gemerkt, da gibt es keine Warnung. Allerdings verwende ich auch nicht die
    neueste Version von Xcode. (Ich nehme aber nicht an, dass das rein kommt).