Betrag in Worte

Hallo zusammen,

ich versuche gerade einen Betrag, welchen ich in ein Textfeld eingegeben habe, in Worte umzuwandeln.

Beispiel 1: 12,90. → zwölf (die Nachkommestellen sind egal)
Beispiel 2: 132 → einhundertzweiunddreißig

Dabei bin ich auf das folgende Muster gestoßen, hier gibt es aber immer wieder mit der aktuellen Xojo-Version Probleme bzw. es funktioniert schlicht nicht.

Weiß hier jemand einen Rat oder gibt es vielleicht eine einfachere Möglichkeit?

Dein Code ist ein wenig falsch formatiert. Das hier sollte funktionieren:

If number > 0 Then
  Dim aUnits() As String = Array("Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
  Dim aTens() As String = Array("Zero'", "Ten", "Twenty", "Thity", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")

  If words <> "" Then words = words + "and "

  If number < 20 Then
    words = words + aUnits(number)
  Else
    words = words + aTens(number / 10)
    If (number Mod 10) > 0 Then words = words + "_" + aUnits(number Mod 10)
  End
End If
1 Like

Wie Martin schon richtig andeutete: Bei deinen String-Definitionen wurden typografische Anführungszeichen gesetzt, keine Gänsefüßchen.

1 Like

Sie haben kein Plural Prozent, Tausend usw. ?

Und für eine Nummer → deutsche Übersetzung?

Vielen Dank. Das habe ich schlicht übersehen bzw. nicht auf die Art der “Gänsefüßchen” geachtet.

Um das eben noch zu beantworten: Zumindest unter macOS/iOS gibt es dafür auch NSNumber, das als Formatter-Option auch einen SpelloutStyle besitzt. Die API ließe sich mit ein paar Declares erschließen. Oder plattformübergreifend vermutlich diese JavaScript-Bibliothek.

1 Like