문자열의 각 단어에서 첫 글자를 대문자로 바꾸는 가장 쉬운 방법은 무엇입니까?
faq 를 참조하십시오.
Ucfirst ()는 문자열을 나누고 나중에 결합하지 않고 문자열에서 각 단어의 첫 글자를 대문자로 입력 해야하는 OP의 질문을 충족한다고 생각하지 않습니다.
@brian이 의견에 언급했듯이 @piCookie가 현재 허용하는 답변이 잘못되었습니다!
$_="what's the wrong answer?";
s/\b(\w)/\U$1/g
print;
그러면 "무엇이 잘못 되었습니까?"라고 인쇄됩니다. 잘못 대문자 S를 통지
FAQ 에 따르면 아마도 사용하는 것이 더 낫습니다.
s/([\w']+)/\u\L$1/g
cfirst 함수를 살펴보십시오.
$line = join " ", map {ucfirst} split " ", $line;
$capitalized = join '', map { ucfirst lc $_ } split /(\s+)/, $line;
공백을 캡처하면 목록에 공백이 삽입되고 원래 간격을 다시 작성하는 데 사용됩니다. "ucfirst lc"는 "teXT"를 "Text"로 대문자로 표시합니다.
$string =~ s/(\w+)/\u$1/g;
잘 작동합니다
이렇게하면 각 줄의 첫 번째 단어 만 대문자로 표시됩니다.
Perl -ne "print (ucfirst($1)$2) if s/^(\w)(.*)/\1\2/" file
대문자로 된 단어가 있고 대신 대문자로만 사용하려는 경우 FAQ 솔루션이 작동하지 않습니다.보다 복잡한 정규식을 만들거나 FAQ 솔루션을 적용하기 전에 문자열에서 lc를 수행하십시오.
Perl로 작성된 아주 멋진 코드 인 ' Title Case '를 사용할 수 있습니다.
맵의 cfirst 함수는 확실히이 작업을 수행하지만 매우 기본적인 방식으로 만 수행됩니다. 좀 더 정교한 것을 원한다면 John Gruber 's TitleCase script 를 살펴보십시오.
이 시도 :
echo "what's the wrong answer?" |Perl -pe 's/^/ /; s/\s(\w+)/ \u$1/g; s/^ //'
정답은 무엇입니까?