回答
要找出一个字符串包含的子字符串您可以使用index
功能:
if (index($str, $substr) != -1) {
print "$str contains $substr\n";
}
它将返回的$substr
中第一次出现的位置$str
,或-1,如果没有找到子。
另一种可能性是使用regular expressions这就是Perl是著名的:
if ($mystring =~ /s1\.domain\.com/) {
print qq("$mystring" contains "s1.domain.com"\n);
}
需要的反斜杠,因为.
可以匹配任何字符。您可以通过使用\Q
和\E
运算符来解决此问题。
my $substring = "s1.domain.com";
if ($mystring =~ /\Q$substring\E/) {
print qq("$mystring" contains "$substring"\n);
}
或者,你可以做eugene y陈述,并使用index功能。 只是一个警告词:索引返回-1
,当它找不到匹配而不是undef
或0
。
因此,这是一个错误:
my $substring = "s1.domain.com";
if (not index($mystring, $substr)) {
print qq("$mystring" doesn't contains "$substring"\n";
}
这将是错的,如果s1.domain.com
是在你的字符串的开头。我已经不止一次地被烧毁了。
我想在简单情况下'index()'比regexps更快? –
尝试perl回答有关[删除子字符串]的问题(http://stackoverflow.com/a/35593275/2019415) - 我没有比较速度,但'=〜','index()','~~'和['match :: simple'](https://metacpan.org/pod/match::simple)都显得有点'awk'-ward ...: - \ –
您还必须确保字符串你正在比较不区分大小写。 S1.DOMAIN.COM不适用于子字符串。但是如果你使用lc($ givendomain),然后将其与“s1.domain.com”进行比较,那么这将起作用。此外,子字符串不一定是正确的方法 - 请参阅我上面的注释到eugene y的回应 – BlueChips23
不区分大小写的子串例
这是尤金的答案,其将字符串检查字串前面为小写的扩展:
if (index(lc($str), lc($substr)) != -1) {
print "$str contains $substr\n";
}
- 1. 检查字符串是否包含字(不是子字符串!)
- 2. 检查字符串包含字符串
- 3. 检查字符串是否包含除
- 4. 检查是否字符串包含“HTTP://”
- 5. 检查Enum是否包含字符串?
- 6. 检查NSMutableArray是否包含字符串
- 7. 检查行是否包含字符串
- 8. 检查是否WCHAR包含字符串
- 9. React-Native:检查字符串是否包含字符串
- 10. Applescript:检查一个字符串是否包含空字符串?
- 11. 检查字符串是否不包含其他字符串
- 12. 检查字符串是否包含字符集中的字符
- 13. 如何检查是否字符串包含字符串数组字符串
- 14. 检查字符串是否包含单词(不是一个句子字符串)
- 15. PHP检查字符串是否包含数字和检查字符串长度
- 16. c# - 检查字符串是否包含字符和数字
- 17. 检查字符串中是否包含字符和数字
- 18. 检查一个字符串是否包含正确位置的子字符串
- 19. Javascript - 如何检查一个字符串是否包含多个子字符串
- 20. 如何检查一个字符串是否包含给定的子字符串?
- 21. 如何检查一个字符串是否包含特定的子字符串
- 22. 如何检查字符串是否包含appway脚本中的子字符串?
- 23. 如何检查一个字符串是否包含一个子字符串 - mysql
- 24. 查找字符串是否包含字
- 25. 检查字符串包含的字符
- 26. 检查字符串包含Unicode字符
- 27. 检查包含子字符串列表的字符串
- 28. 检查字符串是否包含python中的特殊字符
- 29. 检查字符串是否只包含允许的字符
- 30. 检查字符串是否包含for循环的字符?
这种方式是特别preferrable,当你使用一个变量进行搜索 - 这样你就不必对双字符转义(在这个变量字符串中),这对于正则表达式来说是特殊的(比如':')。 – evgeny9