如何在VBScript中将字符串转换为双精度?

如何在VBScript中将字符串转换为双精度?,vbscript,Vbscript,我需要用VBScript编写一些代码,并在一个文本文件中有一个版本号字符串,以便进行比较。如果我将此代码作为测试编写: option explicit Dim VersionString VersionString = "6.2.1" Dim Version Version = CDbl (VersionString) Version = Version * 100 我在CDbl行上得到一个错误: Microsoft VBScript运行时错误:类型不匹配:“CDbl” 如何读取和比较此

我需要用VBScript编写一些代码,并在一个文本文件中有一个版本号字符串,以便进行比较。如果我将此代码作为测试编写:

option explicit

Dim VersionString
VersionString = "6.2.1"

Dim Version
Version = CDbl (VersionString)

Version = Version * 100
我在CDbl行上得到一个错误:

Microsoft VBScript运行时错误:类型不匹配:“CDbl”


如何读取和比较此字符串值?

由于字符串中有两个小数点,因此无法转换为双精度。要转换字符串,必须删除其中一个或两个

为此,可以使用Replace函数。Replace的语法是

Replace(string, find, replacewith [, start [, count [, compare]]])
其中
string
是要搜索的字符串,
find
是要查找的子字符串,
replacewith
是要替换
find
的子字符串,
start
是一个可选参数,指定开始搜索的索引,
count
是一个可选参数,指定要进行多少次替换,而
compare
是一个可选参数,可以是0(vbBinaryCompare)来执行二进制比较,也可以是1(vbTextCompare)来执行文本比较

' Remove all decimals
Version = CDbl(Replace(VersionString, ".", "")

' Remove only the first decimal
Version = CDbl(Replace(VersionString, ".", "", 1, 1)

' Remove only the second decimal
Version = CDbl(Replace(VersionString, ".", "", 3, 1)
“6.2.1”不是双重格式的字符串。所以CDbl()无法转换它。你的选择是:

  • 将版本视为字符串;好的,如果你只需要比较等式,坏的,如果你需要“6.9.1”小于“6.10.2”
  • 拆分“.”上的字符串()并分别处理部分(可能转换为整数/长);您需要为这样的数组编写一个比较函数
  • 删除“.”并CLng生成的字符串;对于“6.10.2”这样的版本将中断
  • 将“*”上的字符串拆分(),然后将“数字”相乘+相加,得到一个(整数)版本号(样本为6*100+2*10+1*1=621);对于“15.00.30729.01”这样的版本可能更复杂

  • 因为小数点后的两个点,它可能不起作用。。要将其转换为数字,必须删除其中一个或两个type@jonhopkins请写下答案,我会接受的