VB.Net 将格式化字符串转换为双精度

问题描述 投票:0回答:1

我通过格式化双精度值获得了一个字符串,例如

Dim strFormat = "#,##0.00 weeks"
Dim strDisplayText As String = dblIn.ToString(strFormat) ' dblIn is type Double

然后 strDisplayText 将显示在(wpf.datagrid 的)文本框中,用户可以对其进行编辑。之后,文本应转换回双精度。

Dim dblOut = ???(strDisplayText, strFormat)
 ' dblOut should be the same as dblIn, if strDisplayText wasnt changed.
if dblOut.ToString(strFormat) <> strDisplayText Then
    print("failed conversion.")
end if

Double.Parse(和 TryParse)由于末尾的“周”而失败,并且 Val 无法处理“,”作为组分隔符。

strFormat 是从文件中读取的,因此它可能是任何有效的自定义或标准数字格式(https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings)

vb.net converters
1个回答
0
投票

您可以使用简单的字符串方法删除末尾的

" weeks"

Dim dblValue = strDisplayText.Remove(strDisplayText.Length - " weeks".Length)
Dim dbl As Double = double.Parse(dblValue)
© www.soinside.com 2019 - 2024. All rights reserved.