VB.Net: Numbers to French words
From Wiki
- Namespace Functions
- ''' <summary>
- '''
- ''' </summary>
- ''' <remarks></remarks>
- Public Class NumberToFrenchWords
- #Region " Private members "
- ''' <summary>
- '''
- ''' </summary>
- ''' <remarks></remarks>
- Dim _Value As Double
- ''' <summary>
- '''
- ''' </summary>
- ''' <remarks></remarks>
- Dim _French As String
- #End Region
- #Region " Public properties "
- ''' <summary>
- '''
- ''' </summary>
- ''' <value></value>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Property Value() As Double
- Get
- Return _Value
- End Get
- Set(ByVal Value As Double)
- _Value = Value
- NumbertoWords()
- End Set
- End Property
- ''' <summary>
- '''
- ''' </summary>
- ''' <value></value>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public ReadOnly Property French() As String
- Get
- Return _French
- End Get
- End Property
- #End Region
- #Region " Constructors "
- ''' <summary>
- '''
- ''' </summary>
- ''' <remarks></remarks>
- Public Sub New()
- _Value = 0
- NumbertoWords()
- End Sub
- ''' <summary>
- '''
- ''' </summary>
- ''' <param name="Value"></param>
- ''' <remarks></remarks>
- Public Sub New(ByVal Value As Double)
- _Value = Value
- NumbertoWords()
- End Sub
- #End Region
- #Region " Private methods "
- ''' <summary>
- '''
- ''' </summary>
- ''' <remarks></remarks>
- Private Sub NumbertoWords()
- Dim strInwords As String
- Dim dblNumberbeforecomma, dblNumberdecimals As Double
- Dim intNumber(10) As Integer
- Dim intTemp As Integer
- If _Value < 1000000 Then
- strInwords = ""
- If dblNumberbeforecomma >= 1000 Then
- If dblNumberbeforecomma >= 2000 Then
- strInwords = valeur(intNumber(1), intNumber(2), intNumber(3)).TrimStart(Convert.ToChar(" ")) & " mille"
- Else
- strInwords = "mille"
- End If
- End If
- If dblNumberbeforecomma > 1 Then
- strInwords &= " " & valeur(intNumber(4), intNumber(5), intNumber(6)).TrimStart(Convert.ToChar(" ")) & " euros"
- Else
- strInwords &= " " & valeur(intNumber(4), intNumber(5), intNumber(6)).TrimStart(Convert.ToChar(" ")) & " euro"
- End If
- If dblNumberdecimals > 0 Then
- If dblNumberdecimals > 1 Then
- strInwords &= " " & valeur(0, Convert.ToInt32(dblNumberdecimals) \ 10, Convert.ToInt32(dblNumberdecimals Mod 10)).TrimStart(Convert.ToChar(" ")) & " cents"
- Else
- strInwords &= " " & valeur(0, Convert.ToInt32(dblNumberdecimals) \ 10, Convert.ToInt32(dblNumberdecimals Mod 10)).TrimStart(Convert.ToChar(" ")) & " cent"
- End If
- End If
- _French = strInwords.TrimStart(Convert.ToChar(" "))
- End If
- End Sub
- ''' <summary>
- '''
- ''' </summary>
- ''' <param name="number"></param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Private Shared Function unité(ByVal number As Integer) As String
- Dim A(20) As String
- A(1) = "un"
- A(2) = "deux"
- A(3) = "trois"
- A(4) = "quatre"
- A(5) = "cinq"
- A(6) = "six"
- A(7) = "sept"
- A(8) = "huit"
- A(9) = "neuf"
- A(11) = "onze"
- A(12) = "douze"
- A(13) = "treize"
- A(14) = "quatorze"
- A(15) = "quinze"
- A(16) = "seize"
- A(17) = "dix-sept"
- A(18) = "dix-huit"
- A(19) = "dix-neuf"
- Return A(number)
- End Function
- ''' <summary>
- '''
- ''' </summary>
- ''' <param name="number"></param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Private Shared Function dizaine(ByVal number As Integer) As String
- Dim A(10) As String
- A(1) = "dix"
- A(2) = "vingt"
- A(3) = "trente"
- A(4) = "quarante"
- A(5) = "cinquante"
- A(6) = "soixante"
- A(7) = "soixante"
- A(8) = "quatre-vingt"
- A(9) = "nonante"
- Return A(number)
- End Function
- ''' <summary>
- '''
- ''' </summary>
- ''' <param name="A"></param>
- ''' <param name="B"></param>
- ''' <param name="C"></param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Private Shared Function valeur(ByVal A As Integer, ByVal B As Integer, ByVal C As Integer) As String
- Dim spatieA, spatieB As String
- If B > 0 Then
- spatieA = " "
- Else
- spatieA = ""
- End If
- If C > 0 Then
- spatieB = " "
- Else
- spatieB = ""
- End If
- valeur = ""
- If A > 0 Then
- If A > 1 Then
- valeur = unité(A)
- End If
- valeur &= " cent"
- End If
- If (A > 1 And B = 0 And C = 0) Then
- valeur = valeur & "s"
- End If
- If B > 0 Then
- If B = 1 Then
- If C = 0 Then
- valeur = valeur & " dix"
- Else
- valeur = valeur & spatieB & unité(10 + C)
- End If
- Else
- valeur = valeur & spatieB & dizaine(B)
- If C = 0 Then
- If B = 7 Then valeur = valeur & "-dix"
- If B = 8 Then valeur = valeur & "s"
- Else
- If C = 1 Then
- If B = 7 Then valeur = valeur & " et onze"
- If B = 8 Then valeur = valeur & "-un"
- If Not (B = 7 Or B = 8) Then valeur = valeur & " et un"
- Else
- If B = 7 Then
- valeur = valeur & "-" & unité(10 + C)
- Else
- valeur = valeur & "-" & unité(C)
- End If
- End If
- End If
- End If
- Else
- If C > 0 Then valeur = valeur & spatieB & unité(C)
- End If
- End Function
- #End Region
- End Class
- End Namespace
This class does what it says it does it translates a number in to words for the french language.


