可能重复:
How can I replace a particular character with its upper-case counterpart?
请考虑以下字符串:
String = "this is for test. i'm new to perl! Please help. can u help? i hope so."
在上面的字符串中,之后。要么 ?要么 !下一个字符应为大写。句子的第一个字母(字符串)也是大写的。我怎样才能做到这一点? 我正逐字逐句地读字符串。
非常感谢您的帮助。
的问候, 阿米特
答案 0 :(得分:4)
以基本方式,您可以尝试此代码
#!/usr/bin/perl
$String = "this is for test. i'm new to perl! Please help. can u help? i hope so.";
$String =~ s/ ((^\w)|(\.\s\w)|(\?\s\w)|(\!\s\w))/\U$1/xg;
print "$String\n";
(^\w)
:行的开头
(\.\s\w)
:在'。'之后其次是空格
(\?\s\w)
:'''后其次是空格
(\!\s\w)
:在'!'之后然后是空格
答案 1 :(得分:2)
Perl具有ucfirst
功能,可以完全按照您的要求执行操作。因此,您只需要将字符串拆分为多个部分,在每个部分上使用ucfirst
,然后再将它们连接在一起。
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
my $string = q[this is for test. i'm new to perl! Please help. can u help? i hope so.];
my @bits = split /([.?!]\s+)/, $string;
$string = join '', map { ucfirst } @bits;
say $string;