2014-12-27 2 views
6

Я пытаюсь заглавные буквы первой строки 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 

ответ

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 в качестве переписчика. Смешивание и сопоставление индексов с использованием отдельного счетчика может привести к проблемам.

13

Для этого вы можете использовать функцию StrConv(). например :

For i = LBound(arr) To UBound(arr) 
    sent = arr(i) 
    arr(i) = StrConv(sent, vbProperCase) 
Next 

или без петли:

arr = Split(StrConv(Join$(arr, " "), vbProperCase), " ") 
4

Различие между использованием strConv с vbPropercase и раствором с UCase(left(xx,1)) & mid(xx,2) является то, что vbPropercase изменяет все первые символы в столицы и все остальные в нижнем регистре. Это не всегда то, что вы хотите, иногда вы просто хотите, чтобы первый как верхний регистр, а остальные - в нижнем регистре.

Затем вы можете использовать несколько усовершенствованное решение:

UCase(Left(<string>,1)) & LCase(Mid(<string>,2)) 
-1

Попробуйте следующее:

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() 
+3

Пожалуйста, добавьте больше кода, чтобы ваши ответы объяснить, что делает ваш код и почему он будет решить эту проблему ОП имеет. Это также поможет будущим читателям понять. Пожалуйста, см. [Ответ] для получения дополнительной информации. – Bugs

Смежные вопросы