当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 用vbs将名称转换为正确的大小写的代码

VBScript
VBS中SendKeys的基本应用
VBScript教程 第十四课在VBScript中使用对象
VBScript教程 第十三课 VBScript与窗体
VBScript教程 第十二课VBScript页面的简单样例
VBScript教程 第十一课深入VBScript
VBScript教程 第十课 VBScript编码约定
VBScript教程 第九课VBScript过程
VBScript教程 第八课 使用循环语句
VBScript教程 第七课使用条件语句
VBScript教程 第六课VBScript运算符
VBscript教程 第五课 VBScript常数
VBScript教程 第四课VBScript变量
VBScript教程 第三课VBScript数据类型
VBScript教程 第二课在HTML页面中添加VBscript代码
VBScript教程 第一课什么是VBScript
VBScript的入门学习资料
VBScript语法速查及实例说明
MsgBox函数语言参考
VBS教程:正则表达式简介 -后向引用
VBS教程:正则表达式简介 -选择与编组

VBScript 中的 用vbs将名称转换为正确的大小写的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 54 ::
收藏到网摘: n/a

问:
您好,脚本专家!我有一个脚本,我的帮助支持人员用它来创建用户帐户。不幸的是,有时这些帮助支持人员在忙乱中会键入类似这样的名称:kEn MYEr。如何将名称转换为正确的大小写(即 Ken Myer)呢?
-- LC
答:
您好,LC。您知道吗:您真幸运。谈到正确行事,脚本专家通常便是您最不愿意找的人。事实上,就我们所知,只有一种情况例外,那便是将名称转换为正确的大小写,即,使名称中的首字母大写,而使其余字母小写。这一点我们还是可以办到的。
注意:嘿,每个人都得能够做点什么。尽管我们更希望能投出超过 Albert Pujols 的快球或赢取奥林匹克金牌,可不管怎样,能够将名称转换为正确的大小写将是我们的下一个选择。
我们预先提醒您,执行此项任务的脚本可能看上去有点隐秘;这是因为 VBScript(不象 Visual Basic)并没有用于将字符串转换为正确大小写的内置方法。不过没关系,毕竟,如果事情太容易,那就没有任何乐趣了:
strFirstName = "kEn"
strLastName = "MYEr"
intFirstName = Len(strFirstName)
strFirstLetter = UCase(Left(strFirstName, 1))
strRemainingLetters = LCase(Right(strFirstName, intFirstName - 1))
strFirstName = strFirstLetter & strRemainingLetters
intLastName = Len(strLastName)
strFirstLetter = UCase(Left(strLastName, 1))
strRemainingLetters = LCase(Right(strLastName, intLastName - 1))
strLastName = strFirstLetter & strRemainingLetters
Wscript.Echo strFirstName, strLastName
让我们逐步向您介绍该过程。一开始,我们只是将值 kEn 和 MYEr 赋给了名为 strFirstName 和 strLastName 的变量;不用说,这便是我们需要转换的两个名称。
注意:是的,尽管不用说,不过我们还是说了。自己去想吧。
先来看看首先应该如何入手,我们是以处理用户的名字开始的。为此,我们使用 Len 函数确定字符串 kEn 中的字母数(对了:kEn 中有三个字母):
intFirstName = Len(strFirstName)
接下来,我们仅需要获取该名称的第一个字母,并将其转换为大写。这一点是通过一对函数组合来实现的。我们使用 Left 函数取得首字母,也就是,从该字符串的左边取得一个字母(倘若您对此感到好奇,那么 1 就表示我们要获取的字母数):
Left(strLastName, 1)
这样,我们就会得到字母 k。然后,我们使用 UCase 函数将该字母转换为大写:
UCase(Left(strLastName, 1))
现在我们有了大写字母 K,我们将其存储在一个名为 strFirstLetter 的变量中。这是太罗嗦了,不过所有这些步骤却是通过一行代码来执行的:
strFirstLetter = UCase(Left(strLastName, 1))
明白其工作原理了吗?好的。现在,我们需要将该名称中的其余所有字母都转换为小写。这便是我们用下面这行代码所做的事情:
strRemainingLetters = LCase(Right(strLastName, intLastName - 1))
是的,它确实看起来有点令人发疯。那就让我们将其拆开来看。我们所要做的是取得名字中除了首字母之外的所有字母。为此,我们使用 Right 函数,从右开始取得 x 个字母。x 是什么?嗯,在本例中,x 将是字符串中的字母总数减 1。换言之,就是 3 减 1,即 2。这样,我们将会得到字母 En(这便是我们所要的一切),而略掉起始字母 k。
明白了吗?以下是其实现代码:
Right(strLastName, intLastName - 1)
那么,我们对那些字母做什么呢?嗯,这次我们要使用 LCase 函数将每个字母都转换为小写:
LCase(Right(strLastName, intLastName - 1))
之后,我们取得这些小写字母并将它们储存在一个名为 strRemainingLetters 的变量中:
strRemainingLetters = LCase(Right(strLastName, intLastName - 1))
是的,这可能是有点令人困惑。但是只要您亲自将该代码过上一两遍,就应该会弄明白了。或者,也可对该代码进行修改,先执行 Left/Right 部分,然后再调用 UCase 或 LCase:
intFirstName = Len(strFirstName)
strFirstLetter = Left(strFirstName, 1)
strFirstLetter = UCase(strFirstLetter)
strRemainingLetters = Right(strFirstName, intFirstName - 1)
strRemainingLetters = LCase(strRemainingLetters)
如果分步进行对您有所帮助,那就再好不过了。
最后,我们需要重新构造用户的名字。为此,我们使用变量 strFirstLetter(其中包含用户名字中首字母的大写版本),并将其与变量 strRemainingLetters(其中包含用户名字中其余所有字母的小写版本)进行合并:
strFirstName = strFirstLetter & strRemainingLetters
对姓氏重复上述整个过程,然后回显“新”的用户姓名。
Wscript.Echo strFirstName, strLastName
来看看我们这样做会得到什么?
Ken Myer
确实漂亮极了。而且还做得恰如其分!