Converting JScript to VB.NET

sollniss

Member
Joined
Aug 5, 2008
Messages
12
Programming Experience
3-5
Can somebody help me converting this code to VB.NET?

VB.NET:
function getTillion(i)
{
    var WW=new Array("M","B","Tr","Quadr","Quint","Sext","Sept","Okt","Non","Dez","Undez","Duodez","Tredez","Quadradez","Quintadez","Sextadez");
    var WWW=new Array("","Un","Duo","Tre","Quattuor","Quin","Sex","Septen","Okto","Novem");
    var WWWW=new Array("","Dez","Vigint","Trigint","Quadragint","Quinquagint","Sexagint","Septuagint","Oktogint","Nonagint");
    var WWWWW=new Array("","Cent","Ducent","Trecent","Quadringent","Quingent","Sescent","Septingent","Octingent","Nongent");
    var WWWWWW=new Array("","Millia","Domillia","Tremillia","Quattuormillia","Quinmillia","Sexmillia","Septenmillia","Oktomillia");
    if(i==0)return "";
    if(i<10)return WW[i-1];
    var e=i%10,z=Math.floor(i/10)%10,h=Math.floor(i/100)%10,t=Math.floor(i/1000)%10,
    zt=Math.floor(i/10000)%10,ht=Math.floor(i/100000)%10;
    var a=WWW[e]+WWWW[z];if(i<100)return a.charAt(0).toUpperCase()+a.substr(1,a.length).toLowerCase();
    a=WWWWW[h]+a;
    if(i<4000)a=WWWWWW[t]+a;
    else a=WWWWW[ht]+WWW[t]+WWWW[zt]+"millia"+a;
    var aa=a.charAt(a.length-1);
    if((aa!="t")&&(aa!="z"))a+="t";
    return a.charAt(0).toUpperCase()+a.substr(1,a.length).toLowerCase();
}
function getZahlwort(x,tr)
{
    x=String(x);
    if(x=="pi")return getZahlwort("3,1415")+" ...";
    if(x=="e")return getZahlwort("2,7182")+" ...";
    if((x=="phi")||(x.indexOf("goldener Schnitt")==0))return getZahlwort("0,6180")+" ...";
if(x=="Phi")return getZahlwort("phi").replace(/null K/,"eins K");
if(x.indexOf("/")>-1)return getBruchZahlwort(x);
    if(x=="0")return "null";
    x=x.replace(/ /g,"").replace(/\./g,",");
    xx=x.split(",");
    if(x.replace(/\D/g,"")=="")return "";
    var t="",v=(x.charAt(0)=="-")?"Minus ":"",i=0;
    
    x=x.replace(/-/,"").replace(/ /g,"");
    x=xx[0].replace(/\D/g,"");
    if(x.length>999999*6)return "diese Zahl ist unheimlich groß, die ist mir zu unheimlich";
    var ZZ=new Array("null","eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun");
    var ZZZ=new Array("zehn","elf","zwölf");
    var ZZig=new Array("","zehn","zwanzig","dreißig","vierzig","fünfzig","sechzig","siebzig","achtzig","neunzig");
    if((tr==null)||(tr==false)||(x<1000000))tr=(1==0);else tr=(1==1);
    var trz=(tr)?" ":"";
    if(x=="0,0")return"Nullkommanix";
    while(x!="")
    {
        while(x.length<3)x="0"+x;
        var y=x.substr(x.length-3,3);x=x.substr(0,x.length-3);
        while(y.length<3)y="0"+y;//alert(y);
        var y1=parseInt(y.charAt(0)),y2=parseInt(y.charAt(1)),y3=parseInt(y.charAt(2));
        var tt=ZZ[y1]+"hundert";
        if(y2==1){if(y3<3)tt+=ZZZ[y3];else tt+=ZZ[y3].replace(/hs/,"h").replace(/en/,"")+"zehn";}
        else tt+=ZZ[y3]+((y2>1)?"und"+ZZig[y2]:"");
        tt=tt.replace(/nullhundert/,"").replace(/eins/g,"ein").replace(/nullund/g,"").replace(/null/g,"");
        if((tt=="ein")&&(i==0))tt+="s";
        if(i==0)t="_"+tt+t;
        if((i==1)&&(tt!=""))t="_"+tt+"tausend"+t;
        if((i>1)&&(tt=="ein")){t="_eine"+trz+getTillion(Math.floor(i/2))+(((i%2)==1)?"illiarde":"illion")+trz+t;}
        else if((i>1)&&(tt!=""))t="_"+tt+trz+getTillion(Math.floor(i/2))+(((i%2)==1)?"illiarden":"illionen")+trz+t;
        i++;
    }
    var T=t.split(" ");
    //T[0]=T[0].replace(/_/,"");
    for(i=0;i<T.length;i++)T[i]=T[i].charAt(0).toUpperCase()+T[i].substring(1,T[i].length).toLowerCase();    
    t=T.join(trz).replace(/_/g,"");
    if(!tr)t=t.toLowerCase();
    if(xx.length>1)
    {
    if(t=="")t="null";
        x=xx[1].replace(/\D/g,"");
        t+=" Komma";
        for(i=0;i<x.length;i++)t+=" "+ZZ[parseInt(x.charAt(i))];
    }
    return v+t;
}
function getZehnerpotenz(n)
{
    n=parseInt(String(n));
    if(isNaN(n))return "";if(n==0)return"eins";if(n==1)return"zehn";if(n==2)return"hundert";
    if(n==3)return"tausend";if(n==4)return"zehntausend";if(n==5)return"hunderttausend";
    if(n==-1)return"ein Zehntel";if(n==-2)return"ein Hundertstel";
    if(n==-3)return"ein Tausendstel";if(n==-4)return"ein Zehntausendstel";
    if(n==-5)return"ein Hunderttausendstel";
    if(n==100)return"zehn Sexdezilliarden - oder 'ein Googol'";
    var v=(n<0);n=Math.abs(n);var m=n%6,p=m%3,q=m>2,n=(n-m)/6;
    var t=(new Array("eine","zehn","hundert"))[p]+" "+getTillion(n)+"illi"+(q?"arde":"on");
    if(!v)return (t+((p>0)?"en":"")).replace(/ee/,"e");
    t=t.replace(/eine/,"").replace(/ /,"").toLowerCase();
    return "ein "+(t.charAt(0).toUpperCase()+t.substr(1,t.length-1)+"stel").replace(/estel/,"stel");
}
function getBruchZahlwort(x)
{
    var xx=x.split("/");if(xx.length==1)return getZahlwort(x);
    if((xx[1]=="")||(String(x).replace(/\./,",").indexOf(",")>-1))return "";
    var Z=getZahlwort(xx[0],true),N=getZahlwort(xx[1])+"tel";
    if(N=="nulltel")return Z+" geteilt durch Null (nicht definiert!)";
    if(Z=="eins")Z="ein";
    N=N.replace(/ttel/,"tel").replace(/igtel/,"igstel").replace(/eine/,"");
    N=N.replace(/dreitel/,"drittel").replace(/bentel/,"btel");
    N=N.charAt(0).toUpperCase()+N.substr(1,N.length-1);
    N=N.replace(/ionentel/,"ionstel").replace(/iardentel/,"iardstel");
    N=N.replace(/iontel/,"ionstel").replace(/iardetel/,"iardstel");
    if(N=="Zweitel")N=(Z=="ein")?"Halb":"Halbe";
    if(N=="Einstel")N=(Z=="ein")?"Ganzes":"Ganze";
    return Z+" "+N;
}

I tried it alone, and this is my result so far:
VB.NET:
   Private Function getTillion(ByVal i As Double)
        Dim WW() As String = {"M", "B", "Tr", "Quadr", "Quint", "Sext", "Sept", "Okt", "Non", "Dez", "Undez", "Duodez", "Tredez", "Quadradez", "Quintadez", "Sextadez"}
        Dim WWW() As String = {"", "Un", "Duo", "Tre", "Quattuor", "Quin", "Sex", "Septen", "Okto", "Novem"}
        Dim WWWW() As String = {"", "Dez", "Vigint", "Trigint", "Quadragint", "Quinquagint", "Sexagint", "Septuagint", "Oktogint", "Nonagint"}
        Dim WWWWW() As String = {"", "Cent", "Ducent", "Trecent", "Quadringent", "Quingent", "Sescent", "Septingent", "Octingent", "Nongent"}
        Dim WWWWWW() As String = {"", "Millia", "Domillia", "Tremillia", "Quattuormillia", "Quinmillia", "Sexmillia", "Septenmillia", "Oktomillia"}

        If i = 0 Then
            Return "" : Exit Function
        ElseIf i < 10 Then
            Return WW(i - 1) : Exit Function
        End If

        Dim e As String = i Mod 10
        Dim z As String = Math.Floor(i / 10) Mod 10
        Dim h As String = Math.Floor(i / 100) Mod 10
        Dim t As String = Math.Floor(1 / 1000) Mod 10
        Dim zt As String = Math.Floor(i / 10000) Mod 10
        Dim ht As String = Math.Floor(i / 100000) Mod 10

        Dim a As String = WWW(e) & WWWW(z)
        If i < 100 Then Return a : Exit Function

        a = WWWWW(h) & a
        If i < 4000 Then
            a = WWWWWW(t) & a
        Else
            a = WWWWW(ht) & WWW(t) & WWWW(zt) & "millia" & a
        End If

        Dim aa As String = a.Chars(a.Length - 1)
        If aa <> t And aa <> z Then a = a & "t"
        Return a.ToUpperInvariant(0) & a.Substring(1, a.Length).ToLower
    End Function

    Private Function getZahlwort(ByVal x As String, ByVal tr As String)
        If x.Contains("/") = True Then Return getBruchZahlwort(x) : Exit Function
        If x = 0 Then Return "null" : Exit Function


    End Function

I dont understand a few things, so I need some help translating it.
 
Back
Top