vbs中分隔字符串的函数

vbs中分隔字符串的函数,第1张

x="abc 0 cde 0 kkk"

s=split(x,"0")

msgbox s(1)

分隔符SPLIT 的用法

描述

返回基于 0 的一维数组,其中包含指定数目的子字符串

语法

Split(expression[, delimiter[, count[, start]]])

Split 函数的语法有以下参数:

参数 描述

expression 必选。字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。

delimiter 可选。用于标识子字符串界限的字符。如果省略,使用空格 ("") 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。

count 可选。被返回的子字符串数目,-1 指示返回所有子字符串。

compare 可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。

设置

compare 参数可以有以下值:

常数 值 描述

vbBinaryCompare 0 执行二进制比较。

vbTextCompare 1 执行文本比较。

vbDatabaseCompare 2 执行基于数据库(在此数据库中执行比较)中包含的信息的比较。

———————————————————————————————————————————

一个关于Split函数在ASP中使用方法的案例:

———————————————————————————————————————————

大家有碰到过要想取一字符串里的某些值而无从下手?有没有觉得看书或教材对split的写法糊里糊涂……如果有此疑问的话,请看下面我对例子的解释,相信您会对这个有一定的了解。

我先介绍一下Split函数的用法:

返回值数组 = Split("字符串","分割符")

假设变量strURL保存着URL值,如strURL = "ftp://username:password@server";,这是我们在IE中登录到FTP上时的URL形式,如果我们想把其中的username和password取出来的话,该怎么办呢?当然解决的方法有许多,在这里我们只介绍用Split来解决的方法。首先,我们找出分割符。我们发现在这个字符串中,username和password之间有个冒号把它们隔开了,所以我们就把这个冒号作为Split函数的"分割符"来分割整个字符串,最后达到取username和password的目的。代码如下:

strURL = "ftp://username:password@server"

aryReturn = Split(strURL,":")

这样我们就把字符串用冒号分割开了,分割后的结果保存在aryReturn中(aryReturn是一个数组)。

下面我们就来看看这个最终的结果吧,因为Split函数最终返回的是一个数组,所以我们主要就是显示数组中的元素了,就要涉及到一些跟数组有关的函数:IsArray()判断是否数组的函数,LBound()取数组的下标,UBound()取数组的上标。

ResponseWrite("返回值是否为数组:" & IsArray(aryReturn) & "<br>")

For i = LBound(aryReturn) To UBound(aryReturn)

ResponseWrite("返回值数组中的元素[" & i & "]:" & Right(aryReturn(i),Len(aryReturn(i))-2) & "<br>")

Next

通过上面的代码,我们看到字符串被分割成三个部分,即:"ftp"、"//username"、"password@server"。我们要取username和password需要进一步的处理,我就不多说了,直接给出代码。

取username的代码:

strUsername = Right(aryReturn(1),Len(aryReturn(1))-2)

取password的代码:

'取password我们又用到Split函数了,不过这回的分割符是"@"

aryTemp = Split(aryReturn(2),"@")

strPassword = aryTemp(0)

'我们可以顺便取出server

strServer = aryTemp(1)

分割符可以是一个字符,也可以是一个字符串。如:

aryReturn = Split("ftp://username:password@server,"//")

注意:

1一般来说,ASP中可以不声明变量,使用Split函数时,如果要声明返回值的变量的话,只能用Dim,而不能用Redim。虽然说其返回是一个数组,应该是用Redim也可以,但在实际使用过程中是不行。不知是怎么回事?

2 如果用Split函数来分割一个字符串中并不存在的分割符时,将返回整个字符串,其结果是只有一个元素的数组。

后话,对于要取一字符串中的某些字符或部分,只要抓住规律,再加上用split就可以很好做成各种效果。

名称:split

使用权限:所有使用者

使用方式:split [OPTION] [INPUT [PREFIX]]

说明:

将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案,其档名依序为 PREFIXaa, PREFIXab;PREFIX 预设值为 `x。若没有 INPUT 档或为 `-,则从标准输入读进资料。

匡兜�

-b, --bytes=SIZE

SIZE 值为每一输出档案的大小,单位为 byte。

-C, --line-bytes=SIZE

每一输出档中,单行的最大 byte 数。

-l, --lines=NUMBER

NUMBER 值为每一输出档的列数大小。

-NUMBER

与 -l NUMBER 相同。

--verbose

于每个输出档被开启前,列印出侦错资讯到标准错误输出。

--help

显示辅助资讯然后离开。

--version

列出版本资讯然后离开。

SIZE 可加入单位: b 代表 512, k 代表 1K, m 代表 1 Meg。

范例:

PostgresSQL 大型资料库备份与回存:

因 Postgres 允许表格大过你系统档案的最大容量,所以要将表格 dump 到单一的档案可能会有问题,使用 split进行档案分割。

% pg_dump dbname | split -b 1m - filenamedump

重新载入

% createdb dbname

% cat filenamedump | pgsql dbname

在vbscript中,常用截取字符串的函数有left(str,length),right(str,length)和mid(str,start,length)

例如dim str="abcdefg"

left(str,3)的结果是c

right(str,3)的结果是e

mid(str,3,1)的结果是c

mid(str,4,2)的结果是e

vb又dir() 函数,判断文件是否存在。

If dir(D:\123) Then

msgbox " 存在。"

Else

msgbox " 不存在。"

End If VBS则是FolderExists()Set fso = CreateObject("ScriptingFileSystemObject")

If fsoFolderExists(D:\123) Then

msgbox " 存在。"

Else

msgbox " 不存在。"

End If

看你的意思好象是要在1vbs中运行在2vbs中包含的函数。我摘抄如下:

1第一种需要可能是需要在一个脚本运行的中间直接运行另外一个脚本。这可以通过下面的方法来完成: Set WSHShell = CreateObject("WScriptShell") WSHShellRun "wscript c:\Testvbs param1", , True

2 更多的时候,我们需要在脚本之间共享变量,以及相互调用函数。我们想要得到C/C++中那样的便利性:通过一个Include声明,就可以将另外一个模块中的函数和变量引入到当前的模块中。在VBScript中,可以通过ExecuteGlobal来实现:

Sub Include(sInstFile)

Dim oFSO, f, s

Set oFSO = CreateObject("ScriptingFileSystemObject")

Set f = oFSOOpenTextFile(sInstFile)

s = fReadAll

fClose

ExecuteGlobal s

End Sub

这样,在脚本中加上这样一句调用:Include "mylibvbs",就可以使用mylibvbs中声明的全局变量和函数了!注意这里的函数ExecuteGlobal有一个类似的函数Execute,这里如果使用Execute的话,就达不到我们想要的效果。因为通过Execute暴露的名字,其作用范围局限于Execute所处的级别,在这里,也就是在函数Include内部。这几乎肯定不是你想要的结果。

详细内容见参考资料。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11677137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存