谢谢你,有用的代码。为什么VB有正确的案例而不是句子的案例很奇怪。为了我的目的,我已经对其进行了调整,因为如果前面有空格,原版不会将第一个字母大写,希望你不介意我分享我的一些更改。
为了删除句子开头或结尾的任何不需要的空格,我添加了另一个从上面调用的函数。
Public Function DblTrim(vString As String) As String
Dim tempString As String
tempString = vString
Do Until Left(tempString, 1) <> " "
tempString = LTrim(tempString)
Loop
Do Until Right(tempString, 1) <> " "
tempString = RTrim(tempString)
Loop
DblTrim = tempString
End Function
Public Function ProperCaps(strIn As String) As String
Dim objRegex As Object
Dim objRegMC As Object
Dim objRegM As Object
Set objRegex = CreateObject("vbscript.regexp")
strIn = DblTrim(strIn)
strIn = LCase$(strIn)
With objRegex
.Global = True
.ignoreCase = True
.Pattern = "(^|[\.\?\!\r\t]\s?)([a-z])"
If .test(strIn) Then
Set objRegMC = .Execute(strIn)
For Each objRegM In objRegMC
Mid$(strIn, objRegM.firstindex + 1, objRegM.Length) = UCase$(objRegM)
Next
End If
ProperCaps = strIn
End With
End Function
您可以调用 ProperCaps(Yourstring) 以将第一个字母作为大写字母取回句子,并删除所有空格。
您还可以使用 DblTrim(Yourstring) 删除字符串前后的所有空格(不改变句子大小写),无论有多少空格。