Como mencionaba, en VB 6 y versiones anteriores era muy simple, solo teníamos que usar la función Format de la siguiente manera:
Format(mystr, "$ ###, ###, ###.##")
La salida era la siguiente (asumiendo que el contenido de la variable mystr era 1000000): $ 1, 000, 000.00
Así de simple era formatear monedas en VB clásico, pero en .Net no es tan sencillo, así que aquí les dejo una función que hace lo mismo, espero les guste, esta función ya se encuentra integrada a la librería Manuel's VB.Net Library, aunque no se ha lanzado al público me la pueden solicitar si lo desean, espero pronto la pueda liberar:
Actualización:
Esta función experimentaba un error al formatear fechas, se han hechos las correcciones necesarias y ya trabaja correctamente.
|
Public Function FormatingString(stream As Object, mask As String) As String
Dim finalstr As String, tmp As String, first As Long, second As Long, str1 As String, str2 As String
Dim intstr As Integer, dblstr As Double, datestr As Date, strstr As String, length_ As Long
Try
If stream.IsNullOrEmpty(stream) = True Then
Return ""
Exit Function
End If
Catch exp As Exception
End Try
Try
If mask.IsNullOrEmpty(mask) = True Then
Return ""
Exit Function
End If
Catch exp As Exception
End Try
Try
If IsNumeric(stream) = True Then
If stream.ToString().IndexOf(".") >= 0 Then
dblstr = stream.ToString().Trim
finalstr = dblstr.ToString(mask)
Else
intstr = stream.ToString().Trim
finalstr = intstr.ToString(mask)
End If
ElseIf IsDate(stream) = True Then
datestr = CDate(stream.ToString().Trim)
finalstr = datestr.ToString(mask)
Else
strstr = stream.ToString
finalstr = strstr
End If
Catch exp As Exception
finalstr = stream
End Try
'##### PATCH INCORRECT DATE VALUE #####
For i=1 To 10
If finalstr.IsNullOrEmpty(finalstr) = False Then
If finalstr.Trim().IndexOf("/00") >= 0 Or finalstr.Trim().StartsWith("00/") = True Then
tmp = stream.Trim
If finalstr.Trim().EndsWith("/00") = True Then
first = 0
second = finalstr.Trim().IndexOf("/00")
length_ = finalstr.Trim().Length - (second + 1)
finalstr = finalstr.Trim().Substring(first, second).Trim + "/" + tmp.Trim().Substring(tmp.Trim().Length - length_, length_).Trim
ElseIf finalstr.Trim().IndexOf("/00/") >= 0 Then
first = finalstr.Trim().IndexOf("/00/")
second = finalstr.Trim().Length - first
str1 = finalstr.Trim().Substring(0, first).Trim
str2 = finalstr.Trim().Substring(second, finalstr.Trim().Length - second).Trim
finalstr = str1.Trim + "/" + tmp.Trim().Substring(first + 1, 2).Trim + "/" + str2.Trim
ElseIf finalstr.Trim().StartsWith("00/") = True Then
finalstr = tmp.Trim().Substring(0, 2).Trim + finalstr.Trim().Substring(2, finalstr.Trim().Length - 2).Trim
End If
Else
Exit For
End If
End If
Next
'##### PATCH INCORRECT DATE VALUE #####
Return finalstr
End Function
¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.
No hay comentarios. :
Publicar un comentario