如何大写随机字母?

时间:2018-10-20 23:52:08

标签: vbscript

在VBScript中是否可以选择一个随机字母并将其大写,直到所有字母都至少被大写一次?

Dim a
a = "Hello"

For i=o To Len(a)-1
    If Mid(a,i+1, 1) = Mid(a, i+1, 1) Then
        b = Mid(a, i+1, 1)
        MsgBox b
    End If
Next

那是我收集的一些代码。到目前为止,它逐个字母地读取字符串。 我希望输出为:

hello
Hello
hEllo
etc.

但是我不知道如何处理而不会陷入令人困惑的超复杂Mid Left Right语句中。可能吗?还是我需要使用类似Mid(LCase(s,1,1) & Mid(UCase(s,2,1)) & Mid(LCase(s,3,3)的东西?

1 个答案:

答案 0 :(得分:1)

使用Len()确定要大写的字母的位置,并使用Left()+ UCase(Mid())+ Mid()来确定p处字母的大写形式:

Option Explicit

Dim s : s = "hello"
Dim l : l = Len(s)
Dim i : i = 0
Do Until s = UCase(s)
   Dim p : p = Fix(Rnd() * l) + 1
   If Mid(s, p, 1) <> UCase(Mid(s, p, 1)) Then s = Left(s, p - 1) & UCase(Mid(s, p, 1)) & Mid(s, p + 1)
   WScript.Echo i, p, s
   i = i + 1
Loop 

输出:

cscript 52911013.vbs
0 4 helLo
1 3 heLLo
2 3 heLLo
3 2 hELLo
4 2 hELLo
5 4 hELLo
6 1 HELLo
7 4 HELLo
8 5 HELLO