请考虑以下字符串
String = "这是为了测试.我是perl的新手!请帮助.你可以帮忙吗?我希望如此."
在后上面的字符串.或?或!下一个字符应为大写.我怎样才能做到这一点?
我正在逐行读取文本文件,我需要将修改后的数据写入另一个文件.
对你的帮助表示感谢.
Hac*_*chi 12
你可以使用正则表达式试试这个:
my $s = "...";
$s =~ s/([\.\?!]\s*[a-z])/uc($1)/ge; # of course $1 , thanks to plusplus
Run Code Online (Sandbox Code Playgroud)
g-flag搜索所有匹配项,e-flag执行uc将字母转换为大写
说明:
上面提到的正则表达式使用这些模式搜索标点符号的每个外观,后跟(可选)空格和字母,并将其替换为uc(将匹配转换为大写)的结果.
例如:
my $s = "this is for test. i'm new to perl! Please help. can u help? i hope so.";
$s =~ s/([\.\?!]\s*[a-z])/uc(&1)/ge;
print $s;
Run Code Online (Sandbox Code Playgroud)
会找到".i","!P",".c"和"?i"然后替换,所以打印结果是:
this is for test. I'm new to perl! Please help. Can u help? I hope so.
Run Code Online (Sandbox Code Playgroud)