检查字符串是否包含字符

Bra*_*don 0 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%";
}
Run Code Online (Sandbox Code Playgroud)

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

"5%" or "==30%" or "+3m:26s overdue" or "13:48:40"
Run Code Online (Sandbox Code Playgroud)

因此,如果$ end_time包含"过期"或"%"百分比将是100%,$ end_time将是检查前的任何内容.而且我确实理解为什么我得到了我得到的结果,而不是我的if语句总是评估为假的原因.

ike*_*ami 5

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

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

sprintf采用带有doubled的字符串%来表示%,但这与构建字符串和正则表达式模式无关.