Vbscript 使用经典asp检查字符串是否全部大写
我需要一个函数来检查一个字符串是否全部(或大部分)大写使用经典asp。(我需要防止用户使用所有大写字母输入标题。) 例如,如果一个由30个字母组成的字符串包含20个或更多大写字母,我需要将其标记为“所有大写字母”。所以“基督山伯爵”可以,但“基督山伯爵”不行 我想从匹配Vbscript 使用经典asp检查字符串是否全部大写,vbscript,asp-classic,Vbscript,Asp Classic,我需要一个函数来检查一个字符串是否全部(或大部分)大写使用经典asp。(我需要防止用户使用所有大写字母输入标题。) 例如,如果一个由30个字母组成的字符串包含20个或更多大写字母,我需要将其标记为“所有大写字母”。所以“基督山伯爵”可以,但“基督山伯爵”不行 我想从匹配[^a-Z]的字母数开始,但我该怎么做呢 这需要使用经典的ASP,而不是VB。只需使用UCase函数即可 <% dim a a = "This is a test 1" dim b b = "THIS IS A TES
[^a-Z]
的字母数开始,但我该怎么做呢
这需要使用经典的ASP,而不是VB。只需使用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是所有的上限
与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
“大写但不是全部或无”假065625
“大写”真1
“琵琶”假0
“大写大写”假0,5
”“真的吗
从匹配[^a-Z]的字母数开始,但如何操作?您要求检查所有字符是否都是大写,然后您要求检查30个字符中的20个是否都是大写。是哪一个?如果这是第一个,我下面的答案就可以了。@Dijkgraaf,听起来他们好像在要求数一数所有大写的单词。老实说,这个问题并不清楚,而且他们自己也没有表现出任何解决方案,个人只会走开并适当地标记。你知道VBscript和经典ASP之间的区别吗?提供最佳答案的人理解最初的问题,那么为什么你不能?第一眼看到你的例子总是会感到困惑…额外的0
来自065625
??然后我意识到这是语言环境,值实际上是0.65625
。很容易被误认为是额外的参数。请注意,这是纯VBScript代码,而不是ASP。特别是,您需要将WScript.Echo
替换为Response.Write
,以便在ASP中运行此操作。@martha有效点。虽然如果人们在使用ASP时不了解Windows脚本主机及其差异,我还是会担心的。它们往往是齐头并进的。@Lankymart:完全可以使用ASP作为服务器平台。WSH在这种情况下没有一席之地。(好吧,除非你的服务器有非常糟糕的安全性。)@martha你没有抓住要点。无论是ASP、WSH还是其他语言,VBScript都是一种“托管”语言。这些小特质与“主人”有关。无论哪种方式,编码者都应该知道它们的存在。例如,Response.Write()。