在Perl(需要新手的简单程序)之后。要么 ?要么 !下一个字符应为大写

时间:2011-10-17 09:16:01

标签: perl

  

可能重复:
  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."

在上面的字符串中,之后。要么 ?要么 !下一个字符应为大写。句子的第一个字母(字符串)也是大写的。我怎样才能做到这一点? 我正逐字逐句地读字符串。

非常感谢您的帮助。

的问候, 阿米特

2 个答案:

答案 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;