我正在尝试将数组sent
中的第一个字母字符串arr
大写。代码中不起作用的部分是Right
函数,它会导致代码返回错误。可能有什么问题?
For Each sent In arr
sent = UCase(Left(sent, 1)) & Right(sent, Len(sent) - 1)
arr(i) = sent
i = i + 1
Next
答案 0 :(得分:20)
您可以使用StrConv()
功能。例如:
For i = LBound(arr) To UBound(arr)
sent = arr(i)
arr(i) = StrConv(sent, vbProperCase)
Next
或没有循环:
arr = Split(StrConv(Join$(arr, " "), vbProperCase), " ")
答案 1 :(得分:8)
使用Mid
函数在字母大写后构建所有内容会更容易。此功能并不要求您指定全长:
For i = LBound(arr) To UBound(arr)
sent = arr(i)
' Capitalize the first letter, then append everything else.
sent = UCase(Left(sent, 1)) & Mid(sent, 2)
arr(i) = sent
Next
此外,您可以使用arr
作为您的枚举器来迭代i
。使用单独的枚举器混合和匹配索引更新可能会导致麻烦。
答案 2 :(得分:0)
尝试以下方法:
NewArr As List<string> NewArr = new List<string>()
For Each sent As String In arr
NewArr.Add(Application.WorksheetFunction.Proper(sent))
Next sent
arr = NewArr.ToArray()