大写字符串除连词和介词外

时间:2014-05-09 20:36:47

标签: vbscript asp-classic

我正在使用下面的代码使字符串具有每个单词中第一个字母的大小写。我想更进一步,只把所有不是介词的单词或连词(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)

3 个答案:

答案 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,所以我不知道它是否有帮助。