Android Code Snippet Ordinal Formating

Discussion in 'Code Snippets' started by Robert Valentino, Nov 5, 2018.

  1. Robert Valentino

    Robert Valentino Well-Known Member Licensed User

    I recently need to format numbers as 1st, 2nd, ... 121st, ...

    So I wrote these routines. Figured someone else may need them

    Call Ordinal passing number and it will returns its Suffix and just the Suffix
    Call FullOrdinal passing number it will return the number with the suffix

    Code:
    Public  Sub Ordinal(Number As Int) As String
                   
               
    Dim Mod100 As Int = Number Mod 100
               
    Dim Mod10  As Int = Number Mod 10
               
               
    If  Mod10 = 1 And Mod100 <> 11 Then
                   
    Return "st"           
               
    End If
               
               
    If  Mod10 = 2 And Mod100 <> 12 Then
                   
    Return "nd"
               
    End If
               
               
    If  Mod10 = 3 And Mod100 <> 13 Then
                   
    Return "rd"
               
    End If
               
               
    Return "th"
    End Sub

    Public  Sub FullOrdinal(Number As Int) As String
                   
               
    Dim Mod100 As Int = Number Mod 100
               
    Dim Mod10  As Int = Number Mod 10
               
               
    If  Mod10 = 1 And Mod100 <> 11 Then
                   
    Return Number &"st"           
               
    End If
               
               
    If  Mod10 = 2 And Mod100 <> 12 Then
                   
    Return Number &"nd"
               
    End If
               
               
    If  Mod10 = 3 And Mod100 <> 13 Then
                   
    Return Number &"rd"
               
    End If
               
               
    Return Number &"th"
    End Sub
    BobVal
     
    JohnC likes this.
  2. Star-Dust

    Star-Dust Expert Licensed User

    try this
    Code:
    Public  Sub Ordinal(Number As Int) As String
        
    Dim Mod100 As Int = Number Mod 100
        
    If Mod100<11 Or Mod100>13 Then
            
    Dim Mod10  As Int = (Number Mod 10)-1
            
    If Mod10>=0 And Mod10<=2 Then Return "stndrd".SubString2(Mod10*2,Mod10*2+2)
        
    End If
     
        
    Return "th"
    End Sub

    Public  Sub FullOrdinal(Number As Int) As String
        
    Dim Mod100 As Int = Number Mod 100
        
    If Mod100<11 Or Mod100>13 Then
            
    Dim Mod10  As Int = (Number Mod 10)-1
            
    If Mod10>=0 And Mod10<=2 Then Return Number & "stndrd".SubString2(Mod10*2,Mod10*2+2)
        
    End If

        
    Return Number & "th"
    End Sub
     
    Last edited: Nov 5, 2018
  3. Star-Dust

    Star-Dust Expert Licensed User

    Try also this:
    Code:
    Public  Sub Ordinal(Number As Int) As String
        
    Dim Mod10 As Int = 0
        
    Dim Mod100 As Int = Number Mod 100
        
    If Mod100<11 Or Mod100>13 Then Mod10 = Min((Number Mod 10),4)

        
    Return "thstndrdth".SubString2(Mod10*2,Mod10*2+2)
    End Sub

    Public  Sub FullOrdinal(Number As Int) As String
        
    Dim Mod10 As Int = 0
        
    Dim Mod100 As Int = Number Mod 100
        
    If Mod100<11 Or Mod100>13 Then Mod10 = Min((Number Mod 10),4)

        
    Return Number & "thstndrdth".SubString2(Mod10*2,Mod10*2+2)
    End Sub
     
    Last edited: Nov 5, 2018
    Erel and Robert Valentino like this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice