Pracuję nad aplikacją na iPhone'a. W etykiecie chcę wyświetlić pierwszą literę nazwy użytkownika z dużej litery. Jak mogę to zrobić?Jak utworzyć wielką literę pierwszej litery w pliku UILabel?
Odpowiedz
Jeśli istnieje tylko jedno słowo-NSString, następnie użyć metody
NSString *capitalizedString = [myStr capitalizedString]; // capitalizes every word
W przeciwnym razie, dla wielu ciągów słów, trzeba wyodrębnić pierwszy znak i dokonać tylko ta postać dużych liter.
jak wspomniano poniżej: ta metoda zamienia na kapitaliki każde słowo ciągu znaków "NSString" –
"capitalizedString": ciąg znaków z pierwszym znakiem każdego słowa w odbiorniku zmieniony na odpowiadającą mu wielką wartość, a wszystkie pozostałe znaki ustawione na odpowiadające im małe litery . – fullMoon
Ta odpowiedź jest poprawna i niepoprawna. – Mutawe
(2014-07-24: Obecnie zaakceptowana odpowiedź jest nieprawidłowa) Pytanie jest bardzo szczegółowe: Utwórz pierwszą wielką literę, pozostaw resztę małymi literami. Używanie capitalizedString daje inny wynik: "Łańcuch pisany wielkimi literami" zamiast "Łańcuch pisany wielkimi literami". Jest jeszcze inny wariant w zależności od lokalizacji, która jest capitalizedStringWithLocale, ale to nie jest poprawna dla hiszpański, teraz to przy użyciu tych samych zasad jak w języku angielskim, tak to jest, jak to robię na hiszpański:
NSString *abc = @"this is test";
abc = [NSString stringWithFormat:@"%@%@",[[abc substringToIndex:1] uppercaseString],[abc substringFromIndex:1] ];
NSLog(@"abc = %@",abc);
Czy nie jest to dokładnie to, co robi odpowiedź Beryl? –
Nie, odpowiedź Beryllium kapitalizuje każdy użytek NSString. –
spowoduje to zgłoszenie wyjątku do pustego ciągu znaków –
to jest dla danej kategorii NSString+Util
...
- (NSString *) capitalizedFirstLetter {
NSString *retVal;
if (self.length < 2) {
retVal = self.capitalizedString;
} else {
retVal = string(@"%@%@",[[self substringToIndex:1] uppercaseString],[self substringFromIndex:1]);
}
return retVal;
}
można zrobić z NSString stringWithFormat
, oczywiście. Używam tego weirdness:
#define string(...) \
[NSString stringWithFormat:__VA_ARGS__]
Nie ma potrzeby sprawdzania !, ponieważ metoda kategorii nie zostanie w tym przypadku wywołana. I pierwsze trzy warunki mogą być zastąpione przez if (self.length <= 1) zwracają self.capitalizedString dla prostoty. –
Masz rację, ale myślę, że jeśli String zostanie zdekonspirowany, może to oznaczać zero. Twój punkt pozostaje, o uproszczeniu. Dzięki –
Nawet jeśli string został zwolniony (co mogło się zdarzyć tylko w kontekście wielowątkowym z błędnym zarządzaniem pamięcią), self pozostawałby zwisającym wskaźnikiem i nie byłby zerowy. –
Oto szybka rozbudowa bo
extension NSString {
func capitalizeFirstLetter() -> NSString {
return self.length > 1 ?
self.substringToIndex(1).capitalizedString + self.substringFromIndex(1) :
self.capitalizedString
}
}
Jak to pracował dla mnie:
NSString *serverString = jsonObject[@"info"];
NSMutableString *textToDisplay = [NSMutableString stringWithFormat:@"%@", serverString];
[textToDisplay replaceCharactersInRange:NSMakeRange(0, 1) withString:[textToDisplay substringToIndex:1].capitalizedString];
cell.infoLabel.text = textToDisplay;
nadzieję, że to pomaga.
Swift:
let userName = "hard CODE"
yourLabel.text = userName.localizedUppercaseString
Polecam używanie tej zlokalizowaną wersję wielkimi literami, ponieważ nazwy są narodowe czuły.
W przypadku gdy ktoś jest nadal zainteresowany w 2016 roku, o to Swift 3 rozszerzenie:
extension String {
func capitalizedFirst() -> String {
let first = self[self.startIndex ..< self.index(startIndex, offsetBy: 1)]
let rest = self[self.index(startIndex, offsetBy: 1) ..< self.endIndex]
return first.uppercased() + rest.lowercased()
}
func capitalizedFirst(with: Locale?) -> String {
let first = self[self.startIndex ..< self.index(startIndex, offsetBy: 1)]
let rest = self[self.index(startIndex, offsetBy: 1) ..< self.endIndex]
return first.uppercased(with: with) + rest.lowercased(with: with)
}
}
Potem go używać dokładnie tak samo, jak za zwykłe duże litery() lub skapitalizowane():
myString.capitalizedFirst()
lub myString.capitalizedFirst(with: Locale.current)
Wystarczy
- (NSString *)capitalizeFirstLetterOnlyOfString:(NSString *)string{
NSMutableString *result = [string lowercaseString].mutableCopy;
[result replaceCharactersInRange:NSMakeRange(0, 1) withString:[[result substringToIndex:1] capitalizedString]];
return result;
}
- 1. Zmiana pierwszej litery każdej linii w pliku na wielką literę
- 2. Jak napisać wielką literą pierwszą literę tekstu
- 3. jak zmienić wielkość litery pierwszej litery?
- 4. Górna część pierwszej litery słów przy użyciu SED
- 5. Get pozycji pierwszej litery w ciągu znaków za pomocą php
- 6. Dlaczego zmienne w Erlang mają na początek wielką literę?
- 7. SQL zmieniając wartość na wielką lub małą literę
- 8. Czy istnieje sposób na wielką literę pierwszej wartości zmiennej w szablonach kodu Eclipse (Helios)?
- 9. Konwertuj ciąg na porządkową wielką lub małą literę
- 10. Jak mogę uniknąć pierwszej litery iphone safari w czapkach
- 11. Matplotlib: figlegend tylko druk pierwszej litery
- 12. Przejście CSS z: pierwszej litery na hover
- 13. Jak wpisać wielką literę za łącznikiem, np. Adam Smith-Jones
- 14. Kapitalizacja pierwszej litery w miękkiej klawiaturze z Androidem dla edittext
- 15. Manipulacja ciągami w Lua: Utwórz nieparzystą wielką literę
- 16. vim: jak usunąć spacje do pierwszej litery?
- 17. Utwórz pierwszą wielką literę i pozostałą małą literę w ciągu znaków
- 18. Jak zastosować CSS do pierwszej litery po: przed treścią?
- 19. Android: Konwertuj pierwszą literę łańcucha na małą literę
- 20. Jak zamapować wszystkie litery w NSString
- 21. Jak utworzyć obraz z UILabel?
- 22. Zamawianie kwerendy sql według pierwszej litery
- 23. Jak sformatować pierwszą literę w Bladerze Laravel
- 24. Jak utworzyć partycję bez systemu Windows, przypisując literę dysku?
- 25. Jak zwiększyć wartość zmiennej do następnej lub poprzedniej litery alfabetu?
- 26. iOS - Uzyskaj "prawdziwą" wysokość litery
- 27. Jak znaleźć pierwszą małą literę w ciągu używając python
- 28. wielką literą w String
- 29. SQL: pierwsza litera tylko wielkiej litery
- 30. React-Native nie może napisać pierwszej litery z niekapitałowym
Gdzie chcesz to pokazać? W polu tekstowym lub etykiecie lub ...? –
Czy sprawdziłeś dokumentację NSString pod kątem jakiejś metody, która brzmi tak, jakby zwracała wielką literę? – UIAdam
Jeśli robisz to na nazwisko, pamiętaj, że reguły wielkich i wielkich liter różnią się od siebie. Niektóre nazwiska, takie jak McDonald czy O'Conor, mają wielkie litery inne niż tylko pierwsze. –