用vbs将名称转换为正确的大小写的代码
程序员文章站
2022-06-23 22:03:10
问: 您好,脚本专家!我有一个脚本,我的帮助支持人员用它来创建用户帐户。不幸的是,有时这些帮助支持人员在忙乱中会键入类似这样的名称:ken myer。如何将名称转...
问:
您好,脚本专家!我有一个脚本,我的帮助支持人员用它来创建用户帐户。不幸的是,有时这些帮助支持人员在忙乱中会键入类似这样的名称: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
确实漂亮极了。而且还做得恰如其分!
您好,脚本专家!我有一个脚本,我的帮助支持人员用它来创建用户帐户。不幸的是,有时这些帮助支持人员在忙乱中会键入类似这样的名称: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
确实漂亮极了。而且还做得恰如其分!