[英]Check whether a string contains a substring
如何使用 Perl 檢查給定字符串是否包含某個子字符串?
更具體地說,我想查看s1.domain.example
是否存在於給定的字符串變量中。
要確定字符串是否包含子字符串,您可以使用index
函數:
if (index($str, $substr) != -1) {
print "$str contains $substr\n";
}
它將返回$substr
在$str
中第一次出現的位置,如果未找到子字符串,則返回 -1。
另一種可能性是使用 Perl 著名的正則表達式:
if ($mystring =~ /s1\.domain\.example/) {
print qq("$mystring" contains "s1.domain.example"\n);
}
需要反斜杠,因為.
可以匹配任何字符。 您可以通過使用\Q
和\E
運算符來解決這個問題。
my $substring = "s1.domain.example";
if ($mystring =~ /\Q$substring\E/) {
print qq("$mystring" contains "$substring"\n);
}
或者,您可以按照eugene y的說明進行操作並使用index函數。 只是一個警告:索引在找不到匹配項時返回-1
而不是undef
或0
。
因此,這是一個錯誤:
my $substring = "s1.domain.example";
if (not index($mystring, $substr)) {
print qq("$mystring" doesn't contains "$substring"\n";
}
如果s1.domain.example
位於字符串的開頭,這將是錯誤的。 我個人不止一次為此感到痛苦。
不區分大小寫的子字符串示例
這是 Eugene 答案的擴展,它在檢查子字符串之前將字符串轉換為小寫:
if (index(lc($str), lc($substr)) != -1) {
print "$str contains $substr\n";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.