- 1
- 2
- 3
- 4
- 5
- 6
public static string CapitalizeFirstLetter(this string s)
{
if (String.IsNullOrEmpty(s))
throw new ArgumentException("Stirng is empty");
return s.First().ToString().ToUpper() + String.Join("", s.Skip(1));
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+143
public static string CapitalizeFirstLetter(this string s)
{
if (String.IsNullOrEmpty(s))
throw new ArgumentException("Stirng is empty");
return s.First().ToString().ToUpper() + String.Join("", s.Skip(1));
}
не ищем легких путей
Правильно:
См. рис. 1
P.S. Не минусовал.
А в шарпе есть легкие пути (какая-нибудь готовая функция)?
char.ToUpper(s[0]) + s.Substring(1);
Все стянуто отсюда:
http://stackoverflow.com/questions/4135317/make-first-letter-of-a-string-upper-case
>в других языках
В Ruby все есть!
http://ideone.com/u1FiQt
http://www.php.net/manual/ru/function.ucfirst.php
и даже более того
http://www.php.net/manual/ru/function.ucwords.php
Правда больше рнр-вей, т.к. на сайте много раз были примеры где пыхапешники инсертили, сортировали и выбирали.
Ну да, в труъ enterprise-level решении на жабе этот CapitalizeFirstLetter нужно вызывать не напрямую, а через HTTP/XML или SOAP интерфейс.
Ну и connection pooling конечно же нужно добавить...
Конструкция явно не сишарпная куда ни глянь. о_О
Ну я с сишарпом на Вы, поэтому не особо удивился такой форме тернарника. Вот отсутствие скобок смутило, да. И точки перед [] тоже.
Кстати, а почему в F# перед [] ставится точка? Для общности?
Хм. Ленивый надеюсь?
UPD: Судя по [1..] - всяко ленивый.
Но зачем?
F# энергичный язык. Самое ленивое что есть в стандартной библиотеке это seq{...} - блок итераторов (IEnumerable)
В местном бусте для фшарпа (PowerPack) есть LazyList но он смотрится как школьная поделка впихнутая со стороны.
А как [1..] может быть не ленивым? Он же бесконечен и никак не влезет в память.
Дык s.[1..] это специальный синтаксис для слайсов, или же туда любой список канает?
P.S. Могу ли я просто написать a = [1..], и что при этом произойдет? Получится кровь-кишки-распидорасило (память кончилась при построении списка), или просто ленивый список (аля IEnumerable)?
Не особо знаю язык, но даже seq{1..} не сработало:
http://ideone.com/ZZYDOt
Ленивый список и энумерейбл совсем разные вещи.
Ну не совсем. Ленивый иммутабельный список (если бы он был) вполне мог бы реализовывать интерфейс IEnumerable.
> .[1..] только для слайсов.
Ясно. Жаль. А хотя бы s.[1..5,6..9,11,15] можно написать?
Прикольно. А слайс это копия или же вьюха оригинальной коллекции? Через него можно что-то поменять в оригинале?
Что-то в духе x[1:2] = [4,5,6], как в питоне.
Похоже вьюха. я хз как оно работает.
Например obj.% param эквивалентно obj % param
Или x -> y эквивалентно (x,y). Очевидно первое для введения операторов, а второе для красоты генерации мапов.