在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)
的东西?
答案 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