我正在使用此代码:
$text =~ s/\s(\w)/\u$1/g;
但是This is an example
成为ThisIsAnExample
而不是This Is An Example
。
如何保留空格?
答案 0 :(得分:2)
使用lookbehind。
$text =~ s/(?<!\S)(\w)/\u$1/g;
或者使用效率更高的\K
(Perl 5.10 +)。
$text =~ s/(?:^|\s)\K(\w)/\u$1/g;
这两个解决方案都会确保第一个单词也大写。如果这不是问题,那么第二个解决方案可以简化为以下内容:
$text =~ s/\s\K(\w)/\u$1/g;
答案 1 :(得分:1)
匹配包含空格,替换不包含空格。
$text =~ s/(\s)(\w)/$1\u$2/g;
由于\s
包含不同类型的空白字符,如果您想将其保留在替换字符中,则需要将其捕获并放回原位。
另一种方法是使用单词边界和完整的“单词”。
$text =~ s/\b(\w+)\b/\u$1/g;