Cheatah: Zahlen in Text umwandeln: Korrigierte Fassung

Beitrag lesen

Hi,

ja. Da mußt Du hier:

{
    $string = $_ . $namen[$i] . $string;
  }
eine Abfrage machen. Weiterhin fällt mir folgendes auf:

??? Ist doch in der korrigierten Version längst geschehen. Hast du die if-Abfrage übersehen?

oh, nicht ganz... ich hatte mich nur verlesen :-) Das kommt davon, wenn man müde ist... sorry!

1000000: "eins Millionen" statt "eine Million"
1000: "einstausend", naja, ich würde zumindest "eintausend" schreiben. Bei mir ist das "ein
Tausend".

Das stimmt natürlich. Dieses Problem liese sich aber nur mit sehr speziellen if-Abfragen lösen.

Das siehst Du ganz richtig! Ich kann gut verstehen, wenn das nicht gemacht wird, man versteht die Zahl ja auch so. (Dabei fällt mir immer ein: "Bei dieser Satz scheint die Grammatik stimmt so ganz nicht, aber versteht man ihn trotzdem" *g*)

Zur Zeit ist jedoch alles sehr allgemein gehalten. Die Umwandlung einer Dreiergruppe in Worte hängt alleine vom Wert der Zehnerstelle ab (0, 1 oder >1). Würde ich diese ganzen Probleme lösen, müsste ich sehr viele Abfragen einbauen. Das kann wohl auch jemand anderes übernehmen ;-)) Stichwort: SELFHTML-Workshop :-)

Naja, siehe mein Script ;-) Schau Dir die Abfragen an, dann siehst Du warum das Script so lang ist!

An Stefan: vielleicht kannst du so eine Seite oder einen Bereich aufnehmen für diese und ähnliche Probleme, bei denen mehrere Leute in Zusammenarbeit ein nützliches Skript oder sonstiges basteln :)

Prima Idee! Ich unterstütze den Antrag! Eventuell sogar einfach als unwesentlich angepaßte Kopie dieses Forums? Ein Thread ist halt die Entwicklung eines Projektes. Klingt gut für mich!

1.234: "einhundertvierunddreißig" - da hat er die 2 nach dem Punkt verschluckt?
0.923: "hundertdreiundzwanzig" - offenbar ist der Fehler doch gravierender...
7%4$9&43(12a496: "zweihundertsechsundneunzig" - okay, bei solchen Falscheingaben
kann man eigentlich nichts vernünftiges mehr erwarten... :-)

s/\D//g; filtert sämtliche nicht-Ziffern heraus, das sollte dieses Problem lösen. Aber wenn ich eine Zahl umwandeln will, dann erwarte ich eigentlich auch eine Zahl, nicht eine sinnlose Zusammenwürfelung von Ziffern und Zeichen.

Steht so glaube ich in meinem Script ;-)
Klar habe ich in meinen Beispielen etwas übertrieben. Aber eine Formatierung der Art "1.234.567,89" ist durchaus normal.

Wenn Du das Problem mit den Sonderzeichen noch in den Griff bekommst (evtl. sogar
Nachkommastellen beachtest), ist das Script fast veröffentlichungsreif.

Nachkommastellen ist doch kein Problem. "0,1234" hieße ja korrekterweise einfach "Null komma eins zwei drei vier".

Sollte mein Script auch so ausgeben ;-)

Schade nur, daß sich Dein Script nicht auf englische Zahlen ("fourtytwo") konvertieren läßt,
ohne die Programmierung zu ändern ;-)))

Das war auch nicht die Aufgabenstellung :) Ich wäre froh gewesen, englische Namen verwenden zu dürfen. Dann hätte ich nicht soviele verschieden Daten-Arrays verwenden müssen.

Stimmt!

Warum muss es "eins", "sechs" und "sieben" heißen, bei Zehnern "zehn", "sechzig" und "siebzig", bei Hundertern "ein", "sechs" und "sieben" und bei Zahlen zwischen 10 und 20 "elf", "sechzehn" und "siebzehn"? Vor allem durch diese Unterschiede muss ich so viele verschiedene Werte beachten :-((

Nun ja, "eleven" und "twelve" hast Du ja auch im Englischen. Schlimmer ist "eins" kontra "einhundert".

Und jetzt freuen wir uns auf die Umwandlung für französische Zahlen. Natürlich ohne Spezialüberprüfung für 91 bis 96 (Patrick?) ;-))

Oh je... die hatte ich ganz vergessen! Machen wir einfach quatre vingt dix für neunzig und setzen bei Bedarf un - neuf drauf. Muß man eigentlich auch manchmal une sagen? Herrje... Franzosen bitte an die Front :-)

Cheatah