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

问:
您好,脚本专家!我有一个脚本,我的帮助支持人员用它来创建用户帐户。不幸的是,有时这些帮助支持人员在忙乱中会键入类似这样的名称: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
确实漂亮极了。而且还做得恰如其分!

(0)

相关推荐

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

    问: 您好,脚本专家!我有一个脚本,我的帮助支持人员用它来创建用户帐户.不幸的是,有时这些帮助支持人员在忙乱中会键入类似这样的名称:kEn MYEr.如何将名称转换为正确的大小写(即 Ken Myer)呢? -- LC 答: 您好,LC.您知道吗:您真幸运.谈到正确行事,脚本专家通常便是您最不愿意找的人.事实上,就我们所知,只有一种情况例外,那便是将名称转换为正确的大小写,即,使名称中的首字母大写,而使其余字母小写.这一点我们还是可以办到的. 注意:嘿,每个人都得能够做点什么.尽管我们更希望能投

  • 详解json string转换为java bean及实例代码

    详解json string转换为java bean及实例代码 pom中添加如下两个库: <dependency> <groupId>org.codehaus.jackson </groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.2</version> <scope>provided</scope> </depende

  • 用vbs将名称截断以使其最多包含 16 个字符的代码

    问: 您好,脚本专家!如何将名称截断以使其最多包含 16 个字符? -- BN 答: 您好,BN.打起精神来:我们又要开始记忆长廊之旅了.曾经有个脚本专家上大学的时候,他在绿巨人公司找了一份暑期临时工,任务就是在办公室里监督华盛顿东部的芦笋收割.当时,绿巨人有一个陈旧笨重的计算机系统,用来记录芦笋的数量 - 然后再记录要付给所有收割者多少钱.这个系统有一个问题,但是(事实上,它的问题不只一个,不过 -):它被设置为姓氏最多可使用 10 个字符,而许多工人的姓都比 10 个字符要长(例如,Myer

  • postgresql查询自动将大写的名称转换为小写的案例

    我就废话不多说了,大家还是直接看代码吧~ SELECT sum(aa) as "recordNumber" FROM table SELECT sum(aa) as recordNumber FROM table postgis查询字段是将字段字段转为小写,如果需要大写的字符,需要加双引号 补充:Postgresql中表名.列名.用户名大小写问题 注意:是双引号,单引号可能会被解析成普通字符,因而是不识别的字段 highgo=# create table "ExChange&

  • VBS实现DOC转为文本文档的代码

    打开记事本输入:  复制代码 代码如下: ON ERROR RESUME NEXT  set args=wscript.arguments  arg=args(0)  set w=createobject("word.application")  set fso=createobject("scripting.filesystemobject")  set docfile=fso.getfile(arg)  docpath=docfile.path  pt=left

  • 使用vbs脚本添加程序到自启动项的代码

    因编辑器过滤了一些字符,比如&,所以下面的脚本可能会运行错误..看官添加&&这个字符就可以了. vbs脚本的功能呢是很多的,不过有时候我们只需要其中的某些功能,今天我突然想研究下怎么用vbs脚本实现添加程序到自启动项...... 首先来一段吧... 复制代码 代码如下: '========================================================================== ' ' VBScript Source File -- Cre

  • PyQt5如何将.ui文件转换为.py文件的实例代码

    PyQt5之如何将.ui文件转换为.py文件 一.通过Eric6把.ui文件转换为.py文件 1.首先打开Eric6编辑器,切换到"窗体"选项卡,然后选中需要转换的.ui文件,单击鼠标右键,选择"编辑窗体"就可以了.(具体步骤如下图) 2.如果找不到自己需要转换的.ui文件,则可以找到"project",选择"New"新建一个工程,创建好之后就可以找到该.ui文件了,找到之后按照上面的步骤就可以了.(具体步骤如下图) 二.通过

  • VBS和UAC用户帐户控制实现代码

    虽然很多人觉得这个功能很鸡肋,但是以VBS的角度来看,UAC还是多多少少有点用的.在UAC的限制下,直接双击VBS文件只能在标准用户权限下运行,很多事情是做不了的,比如复制自身到windows文件夹,或者写入注册表的开机启动项等等.在XP下非常猖獗的暴风一号病毒,放到Win7下也就只能改改文件夹属性为隐藏罢了,其他什么都做不了.当然了,一些不明真相的同学喜欢把UAC功能关掉,然后装个叫什么359还是361的所谓安全软件.我也不好多说什么,不然会遭到围观的. 双击VBS文件系统不会自动弹出UAC窗

  • VBS通过WMI监视注册表变动的代码

    Google一下"VBS监视注册表",TOP 5都是一模一样的代码,我查了一下,出处是Hey, Scripting Guy! Blog上一篇名为<How Can I Monitor Changes to a Registry Key?>的文章,真是厚颜无耻. 文章我没时间翻译了,贴一下代码: 复制代码 代码如下: strComputer = "." Set objWMIService = GetObject("winmgmts:\\"

  • 用VBS精确计算100的阶乘的实现代码

    今天又无聊的逛了一下搜搜问问,找到这样一个问题: 有谁能提供vbs里20的阶乘的详细程序 下面有人给出了这样的答案: 复制代码 代码如下: function jx(x) j=1 for i=2 to x j=j*i next jx=j end function msgbox jx(20) 运行一下上面的程序,输出2.43290200817664E+18.笑而不语,再次证明了我之前的结论,在这种网站上回答问题的,大部分水平都不咋地. 其实之前在<用VBS精确计算2的100次方>我已经写过了VBS

随机推荐