Mam ciąg tekstu (głównie około 5-6 słów), który muszę przekonwertować.
Obecnie tekst wygląda następująco:
THIS IS MY TEXT RIGHT NOW
Chcę go przekonwertować na:
This Is My Text Right Now
Mogę przeglądać moją kolekcję ciągów, ale nie jestem pewien, jak wykonać tę modyfikację tekstu.
Prawdopodobnie wolę wywołać ToTitleCase z CultureInfo ( System.Globalization ) niż Thread.CurrentThread ( System.Threading )
ale powinno być takie samo jak rozwiązanie jspcal
EDYTOWAĆ
W rzeczywistości te rozwiązania nie są takie same :
CurrentThread
--calls ->CultureInfo
!System.Threading.Thread.CurrentThread.CurrentCulture
System.Globalization.CultureInfo.CurrentCulture
Bibliografia:
źródło
Istnieje kilka sposobów konwersji pierwszego znaku ciągu na duże litery.
Pierwszym sposobem jest utworzenie metody, która po prostu zamyka pierwszy znak i dołącza resztę ciągu za pomocą podłańcucha:
Drugim sposobem (który jest nieco szybszy) jest podzielenie ciągu znaków na tablicę znaków, a następnie ponowne zbudowanie ciągu:
źródło
Nie przetestowane, ale coś takiego powinno działać:
Zasadniczo mówi on „wykonaj dopasowanie wyrażenia regularnego we wszystkich wystąpieniach znaku alfanumerycznego, który następuje po innym znaku alfanumerycznym, a następnie zamień go na własną małą literę”
źródło
Jeśli używasz na stronie internetowej, możesz również użyć CSS:
style="text-transform:capitalize;"
źródło
ASP.NET
pokazuje, że OP robi to w sieci. Oczywiście nie jest to odpowiedź na pytanie, ponieważ OP wymagał rozwiązania w,C#
ale rozwiązuje problem i może być alternatywnym rozwiązaniem. +1Podczas budowania dużych tabel prędkość jest problemem, więc druga funkcja Jamiego Dixona jest najlepsza, ale nie działa tak, jak jest ...
Nie udaje mu się zamieniać wszystkich liter na małe i zamienia tylko wielką literę na pierwszą literę ciągu, a nie na pierwszą literę każdego słowa w ciągu ... poniższa opcja rozwiązuje oba problemy:
Chociaż w tym momencie nie wiadomo, czy jest to nadal najszybsza opcja,
Regex
rozwiązanie dostarczone przez George'a Mauera może być szybsze ... ktoś, komu zależy na tym, powinien je przetestować.źródło
Nie wiem, czy poniższe rozwiązanie jest mniej lub bardziej wydajne niż odpowiedź jspcal, ale jestem prawie pewien, że wymaga mniej tworzenia obiektów niż rozwiązanie Jamiego i George'a.
źródło
Oprócz pierwszej odpowiedzi pamiętaj o zmianie indeksu początku wyboru ciągu na koniec słowa, inaczej otrzymasz odwrotną kolejność liter w ciągu.
źródło
Wypróbuj tę technikę; Zwraca pożądany wynik
I nie zapomnij użyć
System.Globalization
.źródło
Jedno z możliwych rozwiązań, które może Cię zainteresować. Przechodzenie przez tablicę znaków od prawej do lewej i odwrotnie w jednej pętli.
źródło
Odpowiedź jspcal jako rozszerzenie ciągu.
Program.cs
StringExtensions.cs
źródło