|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Dennis Krupenik 2:5020/400 13 Feb 2003 16:12:45 To : Sergey Leschenko Subject : Re: заглавные буквы -------------------------------------------------------------------------------- Здравствуй, Sergey! Wed, 12 Feb 2003 07:40:35 +0000 (UTC) ты написал John Lepikhin примерно вот это: JL>> Сижу, балуюсь. А вот можно-ли красивее написать такое JL>> преобразование (все слова строки с большой буквы): JL>> JL>> $s = 'tHeRe\'S no pLAce liKe HOme'; JL>> $s =~ s/(^| )(\w)([^ ]*)/$1.uc($2).lc($3)/ge; SL> $s = join(' ', map { ucfirst lc } split(/\s+/, $s)); да вроде бы не то же самое... SL> alien:/tmp>perl 1.pl SL> tHeRe'S no pLAce liKe HOme SL> There's SL> No Place Like Home SL> разьве что существенно количество пробелов между SL> словами. Если у тебя два слова в строке разделены, к примеру, табулятором, после твоего преобразования там пробел будет... А если n-ное количество разделителей, к которым, кстати, не только whitespace-ы относятся? ===================================== #! /usr/bin/perl -Tw use strict; use warnings; END { print "\n"; } my $string = " tHere\'s no place lIke home, sweet home"; my @string = split(/(\s+)/, $string); my $result = ""; if ($string =~ /^\s+$/) { $result .= shift @string; } for (my $i=0; $i<($#string/2)+1; $i++) { $result .= ucfirst(lc($string[$i*2])); $result .= $string[$i*2+1] if defined ($string[$i*2+1]); } print $result; ===================================== немного громоздко, зато, по-моему, все понятно. А если хочется красоты, сверните это в sub($){}. Денис Крупеник. dennis@uapeople.com --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1617117166592.html, оценка из 5, голосов 10
|