如何在VBScript中将字符串转换为double?

时间:2013-09-05 13:18:05

标签: vbscript

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

option explicit

Dim VersionString
VersionString = "6.2.1"

Dim Version
Version = CDbl (VersionString)

Version = Version * 100

我在CDbl行上收到错误:

Microsoft VBScript runtime error: Type mismatch: 'CDbl'

我应该如何阅读和比较这个字符串值?

2 个答案:

答案 0 :(得分:10)

“6.2.1”不是Double格式化为String。所以CDbl()无法转换它。您的选择是:

  1. 将版本视为字符串;好的,如果你只需要比较相等,如果你需要“6.9.1”小于“6.10.2”
  2. 那就不好
  3. 拆分()字符串“。”并分别处理部分(可能转换为整数/长整数);你需要为这样的数组写一个比较函数
  4. 删除“。”和CLng生成的字符串;将破坏“6.10.2”
  5. 等版本
  6. 将(*)上的字符串拆分()并乘以+加'数字'以得到一个(整数)版本号(6 * 100 + 2 * 10 + 1 * 1 = 621为您的样本);对于像“15.00.30729.01”
  7. 这样的版本可能会更复杂

答案 1 :(得分:1)

转换为double无效,因为字符串中有两个小数点。要转换字符串,您必须删除其中一个或两个。

为此,您可以使用“替换”功能。替换的语法是

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)