簡體   English   中英

檢查字符串是否包含子字符串

[英]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而不是undef0

因此,這是一個錯誤:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM