使用经典的asp检查字符串是否都是大写字母

时间:2016-09-01 00:58:08

标签: vbscript asp-classic

我需要一个函数来检查字符串是否是使用经典asp的所有(或大多数)大写字母。 (我需要阻止用户使用所有大写字母输入标题。)

例如,如果一个30个字母的字符串包含20个或更多的大写字母,我需要将其标记为"所有大写字母"。所以"基督山伯爵"没关系,但是" MONTE CRISTO"不会。

我正在考虑从匹配[^A-Z]的字母数开始,但我该怎么做?

这需要使用经典ASP,而不是VB。

2 个答案:

答案 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全是上层