我正在使用下面的代码使字符串具有每个单词中第一个字母的大小写。我想更进一步,只把所有不是介词的单词或连词(the,and,an,as,to)等大写。这在经典ASP中是否可行?
转换它:
this is the best website on the web
对此:
This is the Best Website on the Web
我认为这可以通过RegEx实现,但我不知道从哪里开始。任何帮助表示赞赏。
queryForHTML = capCase(queryForHTML,true)
答案 0 :(得分:0)
经典ASP中没有任何内容可以帮助您。
我能想到的唯一选择是构建一个不应该大写的单词字典,并修改你的代码不要包含这些单词。
答案 1 :(得分:0)
这是我的第一个想法。我相信你能够改善它。
<%
xText = "This Is The Best Website On The Web"
xTextSplit = split(xText, " ")
for each item in xTextSplit
xWord = item
if lcase(item) = "the" or lcase(item) = "and" or lcase(item) = "an" or lcase(item) = "as" or lcase(item) = "to" or lcase(item) = "is" or lcase(item) = "on" then
xWord = lcase(item)
end if
xCompleteWord = xCompleteWord &" "& xWord
next
response.write xCompleteWord
%>
输出:This is the Best Website on the Web
修改强> 您也可以使用CSS来大写单词(请注意,这将以小写字母大写每个单词)
<div style="text-transform: capitalize;"><%=lcase(xCompleteWord)%></div>
答案 2 :(得分:0)
您可以使用HashSet(Of String)
来存储这些特殊字词。然后用空格分割以获取字符串中的所有单词,检查是否需要在大写或小写第一个字母并使用string.Join
创建新字符串。
这是一种方法:
Private Shared ReadOnly CapCaseExceptions As New HashSet(Of String)(StringComparer.CurrentCultureIgnoreCase) From {
"the", "and", "an", "as", "to", "is", "on"
} ' etc.
Public Shared Function CapCase(input As String) As String
Dim words = From w In input.Split()
Let word = If(CapCaseExceptions.Contains(w),
Char.ToLower(w(0)) + w.Substring(1),
Char.ToUpper(w(0)) + w.Substring(1))
Select word
Return String.Join(" ", words)
End Function
您的样本输入:
Dim input As String = "This Is The Best Webite On The Web"
Console.Write(CapCase(input)) ' This is the Best Webite on the Web
编辑:我不熟悉经典ASP,所以我不知道它是否有帮助。