Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: weisnix am 01.11.10 - 11:42:12

Titel: Zahl in Worten (Buchstaben) umwandeln
Beitrag von: weisnix am 01.11.10 - 11:42:12
Hallo,

hat von euch schon mal jemand ne Funktion geschrieben, mit der man Zahlen in Buchstaben umwandeln kann?

Also aus einem Zahlenfeld von z.B. 1238 soll in ein anderes Feld der Wert "Eintausendzweihundertachtunddreißig" geschrieben werden.

Danke für Eure Hilfe.

Gruß
André

Titel: Re: Zahl in Worten (Buchstaben) umwandeln
Beitrag von: Peter Klett am 01.11.10 - 12:28:33
Da ich nicht genau weiß, wozu das benötigst, nur ein Hinweis, wie ich das mal automatisch auf Schecks (das sind diese kleinen Zettel, für die man früher mal Geld bekam, als noch nicht jeder mit 'ner Kreditkarte ausgestattet war  :)) gedruckt gesehen habe.

-eins-zwei-drei-acht-

Das hat man im Bankenbereich akzeptiert und lässt sich natürlich viel einfacher rechnen. Vielleicht genügt das in Deiner Anwendung ja auch?
Titel: Re: Zahl in Worten (Buchstaben) umwandeln
Beitrag von: 0xse am 02.11.10 - 10:39:19
Jup, aber in JavaScript vor ca. 10 Jahre. Ist im Prinzip nur Fleißarbeit. PM mir mal deine Mailadresse, dann kann ich dir das gerne schicken.
Titel: Re: Zahl in Worten (Buchstaben) umwandeln
Beitrag von: billygates am 02.11.10 - 16:20:16
Ich sag nur: @replaceSubstring
Titel: Re: Zahl in Worten (Buchstaben) umwandeln
Beitrag von: 0xse am 08.11.10 - 17:37:55
Grad' beim Aufräumen drauf gestoßen. Der Code ist in keinster Weise vorbildlich, ich würde das eher unter Machbarkeits-Experiment verbuchen ;)

Code
<html>

<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<script language="JavaScript" src="overlib.js"><!-- overLIB (c) Erik Bosrup --></script>

<script language="JavaScript">
<!--

function intToStr(arg_zahl){
	function kToStr(arg_zahl){
    var zahl = arg_zahl;
    if(zahl.substr(0,1)=='0'){zahl= zahl.substr(1,zahl.length);}
    if(zahl.substr(0,1)=='0'){zahl= zahl.substr(1,zahl.length);}
    if(zahl.substr(0,1)=='0'){zahl= zahl.substr(1,zahl.length);}
    var final = "";
    function sonderzahlen(sonder){
      sonder = parseInt(sonder);
      if(sonder == 10)return "zehn";
      if(sonder == 11)return "elf";
      if(sonder == 12)return "zwölf";
      if(sonder == 13)return "dreizehn";
      if(sonder == 14)return "vierzehn";
      if(sonder == 15)return "fünfzehn";
      if(sonder == 16)return "sechszehn";
      if(sonder == 17)return "siebzehn";
      if(sonder == 18)return "achtzehn";
      if(sonder == 19)return "neunzehn";
      return false;}
    var einzeln = Array("null","eins","zwei","drei","vier","fuenf","sechs","sieben","acht","neun");
    var zehner = Array("null","zehn","zwanzig","dreißig","vierzig","fuenfzig","sechzig","siebzig","achtzig","neunzig");
    if(zahl.length == 3){
      if(zahl=="000")return '';
      if(zahl.substr(0,1)=='1'){
        final += "einhundert";
      }else{
        final += einzeln[zahl.substr(0,1)] + "hundert";}
      if(zahl.substr(1,2)!="00"){
        if(zahl.substr(1,1)!='0'){
          if(((parseInt(zahl.substr(1,2)) > 19) || (parseInt(zahl.substr(1,2)) < 11)) && zahl.substr(2,1) != '0'){
            einzeln[1] = "ein";
            final += einzeln[parseInt(zahl.substr(2,1))] + "und" + zehner[parseInt(zahl.substr(1,1))];
          }else if((parseInt(zahl.substr(1,2)) < 20) && (parseInt(zahl.substr(1,2)) > 10)){
            final += sonderzahlen(zahl.substr(1,2));
          }else if(zahl.substr(2,1)=='0'){
          final += zehner[parseInt(zahl.substr(1,1))];
          }else{
            final += einzeln[parseInt(zahl.substr(2,1))];}
        }else{
          final += einzeln[parseInt(zahl.substr(2,1))];}}
    }else if(zahl.length==2){
      if(zahl=="00")return '';
      if(zahl.substr(0,1)!='0'){
        if(((parseInt(zahl.substr(0,2)) > 19) || (parseInt(zahl.substr(0,2)) < 11)) && zahl.substr(1,1) != '0'){
          einzeln[1] = "ein";
          final += einzeln[parseInt(zahl.substr(1,1))] + "und" + zehner[parseInt(zahl.substr(0,1))];
        }else if((parseInt(zahl.substr(0,2)) < 20) && (parseInt(zahl.substr(0,2)) > 10)){
          final += sonderzahlen(zahl.substr(0,2));
        }else if(zahl.substr(1,1)=='0'){
        final += zehner[parseInt(zahl.substr(0,1))];
        }else{
          final += einzeln[parseInt(zahl.substr(1,1))];}
      }else{
        final += einzeln[zahl];}
    }else if(zahl.length==1){
      if(zahl=='0')return '';
      final += einzeln[parseInt(zahl.substr(0,1))];}
    return final;}

	var ff = "";
  if(arg_zahl.length<4){
	  return kToStr(arg_zahl);
	}else if(arg_zahl.length<7){
		var f1 = kToStr(arg_zahl.substr(0,arg_zahl.length-3));
		var f2 = kToStr(arg_zahl.substr(arg_zahl.length-3,3));
		return f1 + "tausend" + f2;
	}else if(arg_zahl.length<10){
		var f1 = kToStr(arg_zahl.substr(0,arg_zahl.length-6));
		var f2 = kToStr(arg_zahl.substr(arg_zahl.length-6,3));
		var f3 = kToStr(arg_zahl.substr(arg_zahl.length-3,3));
		if(f1=='eins'){ff+="einemillion";}else{ff+=f1+"millionen";}
		if(f2=='eins'){ff+="eintausend";}else if(f2!=""){ff+=f2+"tausend";}
		ff+=f3;
		return ff;
	}else if(arg_zahl.length<13){
		var f1 = kToStr(arg_zahl.substr(0,arg_zahl.length-9));
		var f2 = kToStr(arg_zahl.substr(arg_zahl.length-9,3));
		var f3 = kToStr(arg_zahl.substr(arg_zahl.length-6,3));
		var f4 = kToStr(arg_zahl.substr(arg_zahl.length-3,3));
		if(f1=='eins'){ff+="einemilliarde";}else{ff+=f1+"milliarden";}
		if(f2=='eins'){ff+="einemillion";}else if(f2!=""){ff+=f2+"millionen";}
		if(f3=='eins'){ff+="eintausend";}else if(f3!=""){ff+=f3+"tausend";}
		ff+=f4;
		return ff;}
}

//-->
</script>

<body>

<center><br><br><br><br><br><br><br><br><br><br><br>
<input type="text" name="a1">
<input type="button" onClick="alert(intToStr(document.all.a1.value));" value="da button">

</body>

</html>