检查字符串是否包含字符

时间:2011-04-25 05:32:38

标签: perl string-comparison

我正在尝试执行一个简单的检查以查看字符串是否包含“%”,但每当我执行我的代码时,无论字符串中的内容是什么,它都会将if语句评估为false。我的代码如下所示:

if ($end_time =~ m{%%}) {
    ($percentage) = $end_time =~ m/=([^%%]*)%%/g;
    $percentage = sprintf("%s%%", $percentage);
    $end_time = "";
}
elsif ($duration =~ m/(overdue)/) {
    $percentage = "$end_time $duration";
    $end_time = "";
}
else {
    $percentage = "100%";
}

和$ end_time的期望值,替换你喜欢的任何数值。

"5%" or "==30%" or "+3m:26s overdue" or "13:48:40"

因此,如果$ end_time包含“过期”或“%”百分比将为100%,$ end_time将是检查前的任何内容。我明白为什么我得到了我得到的结果,而不是我的if语句总是评估为假的原因。

2 个答案:

答案 0 :(得分:5)

字符串文字和正则表达式文字用\转义,而不是加倍,%也不需要转义。

if ($end_time =~ m{%}) {
    ($percentage) = $end_time =~ m/=([^%]*)%/g;
    $percentage = sprintf("%s%%", $percentage);
    $end_time = "";

sprintf使用加倍%的字符串来表示%,但这与构建字符串和正则表达式模式无关。

答案 1 :(得分:3)

您还可以使用index()

等字符串函数检查字符串中是否包含“%”