我需要一个函数来检查字符串是否是使用经典asp的所有(或大多数)大写字母。 (我需要阻止用户使用所有大写字母输入标题。)
例如,如果一个30个字母的字符串包含20个或更多的大写字母,我需要将其标记为"所有大写字母"。所以"基督山伯爵"没关系,但是" MONTE CRISTO"不会。
我正在考虑从匹配[^A-Z]
的字母数开始,但我该怎么做?
这需要使用经典ASP,而不是VB。
答案 0 :(得分:4)
与UCase(输入)比较使其成为全有或全无的检查;我更喜欢看UCase比率:
Option Explicit
Function Ucasity(s)
If Len(s) Then
Dim r : Set r = New RegExp
r.Global = True
r.Pattern = "[A-Z]"
Dim m : Set m = r.Execute(s)
Ucasity = m.Count / Len(s)
Else
Ucasity = 0
End If
End Function
Function qq(s) : qq = """" & s & """" : End Function
Dim s
For Each s In Array( _
"UPPERCASE but not ALL OR NOTHING" _
, "UPPERCASE" _
, "pipapo" _
, "UPPERCASEuppercase" _
, "" _
)
WScript.Echo qq(s), CStr(s = UCase(s)), UCasity(s)
Next
输出:
cscript 39261181.vbs
"UPPERCASE but not ALL OR NOTHING" False 0,65625
"UPPERCASE" True 1
"pipapo" False 0
"UPPERCASEuppercase" False 0,5
"" True 0
答案 1 :(得分:1)
只需使用UCase功能
<%
dim a
a = "This is a test 1"
dim b
b = "THIS IS A TEST 2"
If a = ucase(a) then response.write(a & " is all upper")
If b = ucase(b) then response.write(b & " is all upper")
%>
结果
这是测试2全是上层