将字符串中每个单词的首字母大写的最简单方法是什么?
Dan Littlejohn
问问题
67885 次
10 回答
18
请参阅常见问题解答。
我不相信ucfirst()
满足 OP 的问题是将字符串中每个单词的第一个字母大写而不拆分字符串并稍后加入。
于 2008-09-16T21:19:29.383 回答
13
看一下ucfirst函数。
$line = join " ", map {ucfirst} split " ", $line;
于 2008-09-16T21:17:52.710 回答
11
$capitalized = join '', map { ucfirst lc $_ } split /(\s+)/, $line;
通过捕获空白,将其插入列表中并用于重建原始间距。“ucfirst lc”将“teXT”大写为“Text”。
于 2008-10-08T10:49:54.630 回答
6
$string =~ s/(\w+)/\u$1/g;
应该可以正常工作
于 2008-09-16T22:14:12.123 回答
2
这仅将每行的第一个单词大写:
perl -ne "print (ucfirst($1)$2) if s/^(\w)(.*)/\1\2/" file
于 2012-02-29T23:37:09.303 回答
1
请注意,如果您的单词全部大写并且您希望它们(仅)大写,则常见问题解答解决方案不起作用。您可以制作更复杂的正则表达式,或者在应用常见问题解答解决方案之前对字符串执行 lc。
于 2008-09-16T22:56:39.137 回答
1
您可以使用“ Title Case ”,它是用 Perl 编写的一段非常酷的代码。
于 2010-02-25T14:29:00.213 回答
1
试试这个 :
echo "what's the wrong answer?" |perl -pe 's/^/ /; s/\s(\w+)/ \u$1/g; s/^ //'
输出将是:
What's The Wrong Answer?
于 2017-11-24T16:56:27.913 回答
-1
map 中的ucfirst函数当然可以做到这一点,但只是以非常基本的方式。如果您想要更复杂的东西,请查看John Gruber 的 TitleCase 脚本。
于 2008-09-17T02:41:36.443 回答