2014-12-27 26 views
6

dizisindeki ilk harf dizgisini arr dizisinde büyük harflerle yazmaya çalışıyorum. Çalışmayan kodun parçası, kodun bir hata döndürmesine neden olan Right işlevidir. Düzeltme ne olabilir?Dizelerin ilk harfinin büyük harfle yazılması

For Each sent In arr 
    sent = UCase(Left(sent, 1)) & Right(sent, Len(sent) - 1) 
    arr(i) = sent 
    i = i + 1 
Next 

cevap

8

mektup aktifleştirme sonrası her şeyi oluşturmak için Mid fonksiyonunu kullanmak daha kolay olacaktır. Bu işlev, tam uzunlukta belirtmek gerektirmez:

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 

Ayrıca, sadece sýralayýcý olarak i kullanılarak arr yineleme yapabilirsiniz. Ayrı bir numaralayıcı kullanarak indeks güncellemelerini karıştırmak ve eşleştirmek sorunlara yol açabilir.

13

Bunun için StrConv() işlevini kullanabilirsiniz. Örneğin. :

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

veya döngüsüz

:

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

vbPropercase ile strConv kullanılarak ve UCase(left(xx,1)) & mid(xx,2) çözelti vbPropercase Büyük ve küçük harfe diğerleri için tüm birinci karakter değiştirmesidir arasındaki fark. İstediğiniz Her Zaman Değil, bazen sadece bir büyük harf ve geri kalanını küçük harf olarak istiyorum.

Daha sonra biraz geliştirilmiş bir çözüm kullanabilirsiniz

: Deneyin

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

aşağıdadır:

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

kodunuzu ne yaptığını açıklayan cevaplar için kodundan daha eklemek ve neden sorunu çözecektir lütfen OP yaşıyor. Gelecek okuyucuların da anlaması için yardımcı olacaktır. Daha fazla bilgi için lütfen [cevap] bölümüne bakınız. – Bugs

İlgili konular