可以把文章标题中的英文单词的首字母变成大写的函数

来源:互联网 发布:魔兽数据库手机版7.25 编辑:程序博客网 时间:2024/04/30 02:05

 

功能说明:

可以把文章标题中的英文单词的首字母变成大写:)

效果演示:

 

<%

function PCase(strInput)
     'Variable declaration.
     Dim strArr
     Dim tmpWord
     Dim tmpString
     Dim last
     
     
     'Create an array To store Each word In the String separately.
     strArr = split(strInput," ")
     
     
     if ubound(strArr) > 0 Then
      For x = lbound(strArr) To ubound(strArr)
       'Set Each word To lower Case initially.
       strArr(x) = LCase(strArr(x))
     
       
       'Skip the unimportant words.
       Select Case strArr(x)
        Case "a"
        Case "an"
        Case "and"
        Case "but"
        Case "by"
        Case "for"
        Case "in"
        Case "into"
        Case "is"
        Case "of"
        Case "off"
        Case "on"
        Case "onto"
        Case "or"
        Case "the"
        Case "to"
        Case "a.m."
         strArr(x) = "A.M."
        Case "p.m."
         strArr(x) = "P.M."
        Case "b.c."
         strArr(x) = "B.C."
        Case "a.d."
         strArr(x) = "A.D."
        Case Else
        
         'Capitalize the first letter, but don't forget To take into account that
         'the String may be in Single or Double quotes.
         if len(strArr(x)) > 1 Then
          if mid(strArr(x),1,1) = "'" or mid(strArr(x),1,1) = """" Then
           tmpWord = mid(strArr(x),1,1) & Ucase(mid(strArr(x),2,1)) & mid(strArr(x),3,len(strArr(x))-2)
          Else
           tmpWord = Ucase(mid(strArr(x),1,1)) & mid(strArr(x),2,len(strArr(x))-1)
          End if
          strArr(x) = tmpWord
         End if
         
       End Select
       
       
       'The unimportant words may need To be capitalized if they follow a dash, colon,
       'semi-colon, Single quote or Double quote.
       if x > 0 Then
        if instr(strArr(x-1),"-") _
        or instr(strArr(x-1),":") _
        or instr(strArr(x-1),";") Then
         tmpWord = Ucase(mid(strArr(x),1,1)) & mid(strArr(x),2,len(strArr(x))-1)
         strArr(x) = tmpWord
        End if
       End if
       
      Next
     Else
      strArr(0) = LCase(strArr(0))
     End if
     
     
     'Make sure the first word In the array is upper case, but don't forget To take into account
     'that the String may be in Single or Double quotes.
     if mid(strArr(0),1,1) = "'" or mid(strArr(0),1,1) = """" Then
      tmpWord = mid(strArr(0),1,1) & Ucase(mid(strArr(0),2,1)) & mid(strArr(0),3,len(strArr(0))-2)
     Else
      tmpWord = Ucase(mid(strArr(0),1,1)) & mid(strArr(0),2,len(strArr(0))-1)
     End if
     strArr(0) = tmpWord
     
     
     'Also, make sure the last word In the array is upper case, but don't forget To take into account
     'that the String may be in Single or Double quotes.
     last = ubound(strArr)
     if mid(strArr(last),1,1) = "'" or mid(strArr(last),1,1) = """" Then
      tmpWord = mid(strArr(last),1,1) & Ucase(mid(strArr(last),2,1)) & mid(strArr(0),3,len(strArr(last))-2)
     Else
      tmpWord = Ucase(mid(strArr(last),1,1)) & mid(strArr(last),2,len(strArr(last))-1)
     End if
     strArr(last) = tmpWord
     
     
     'Rebuild the whole String from the array parts.
     For x = lbound(strArr) To ubound(strArr)
      tmpString = tmpString & strArr(x) & " "
     Next
     
     PCase = tmpString
    End function
%>