如何在Perl中将每个单词的首字母大写?

时间:2020-03-05 18:57:14  来源:igfitidea点击:

在字符串的每个单词中首字母大写的最简单方法是什么?

解决方案

回答

看一下ucfirst函数。

$line = join " ", map {ucfirst} split " ", $line;

回答

参见常见问题解答。

我不相信ucfirst()可以满足OP的问题,即在不分割字符串并随后将其连接的情况下,将字符串中每个单词的首字母大写。

回答

$string =~ s/(\w+)/\u/g;

应该很好

回答

请注意,如果单词全部用大写字母,而又想将其全部(仅)大写,则FAQ解决方案将不起作用。我们可以制作更复杂的正则表达式,也可以在应用FAQ解决方案之前对字符串执行lc。

回答

映射中的ucfirst函数当然可以执行此操作,但仅以非常基本的方式进行。如果我们想要更高级的内容,请查看John Gruber的TitleCase脚本。

回答

正如@brian在评论中提到的那样,@ piCookie当前接受的答案是错误的!

$_="what's the wrong answer?";
s/\b(\w)/\U/g
print;

这将打印"什么是错误的答案?"注意大小写错误的S

如常见问题解答所述,我们可能最好使用

s/([\w']+)/\u\L/g

或者Text :: Autoformat

回答

$capitalized = join '', map { ucfirst lc $_ } split /(\s+)/, $line;

通过捕获空白,它将插入列表中,并用于重建原始间距。 " ucfirst lc"将" teXT"大写为" Text"。

回答

我们可以使用" Title Case",它是用Perl编写的非常酷的代码。