jmccr78
Я сделал нижеприведенные методы расширения для себя, чтобы соответствовать одному из моих проектов, но, возможно, они будут полезны кому-то еще.
Imports System.Numerics
Imports System.Text.RegularExpressions
Imports System.Runtime.CompilerServices
Friend Module ExtensionMethod
<Extension()>
Friend Function TrimDecimal(ByVal obj As BigInteger) As String
Return obj.ToString().TrimDecimal()
End Function
<Extension()>
Friend Function TrimDecimal(ByVal obj As Decimal) As String
Return New BigInteger(obj).ToString().TrimDecimal()
End Function
<Extension()>
Friend Function TrimDecimal(ByVal obj As Double) As String
Return New BigInteger(obj).ToString().TrimDecimal()
End Function
<Extension()>
Friend Function TrimDecimal(ByVal obj As Single) As String
Return New BigInteger(obj).ToString().TrimDecimal()
End Function
<Extension()>
Friend Function TrimDecimal(ByVal obj As String) As String
If String.IsNullOrWhiteSpace(obj) OrElse Not Regex.IsMatch(obj, "^(\d+([.]\d*)?|[.]\d*)$") Then Return String.Empty
Dim rex As Regex = New Regex("^[0]*(?<pre>([0-9]+)?)(?<post>([.][0-9]*)?)$")
Dim mev As MatchEvaluator = Function(m) String.Concat(If(m.Groups("pre").Length > 0, m.Groups("pre").Value, "0"), m.Groups("post").Value.TrimEnd({"."c, "0"c}))
Return rex.Replace(obj, mev)
End Function
End Module
Хотя для этого потребуется ссылка на
System.Numerics
.