পার্ল ব্যবহার করে কোনও প্রদত্ত স্ট্রিংয়ে একটি নির্দিষ্ট সাবস্ট্রিং রয়েছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?
আরও নির্দিষ্টভাবে, আমি দেখতে চাই s1.domain.com
যে প্রদত্ত স্ট্রিং ভেরিয়েবলটিতে উপস্থিত রয়েছে কিনা ।
পার্ল ব্যবহার করে কোনও প্রদত্ত স্ট্রিংয়ে একটি নির্দিষ্ট সাবস্ট্রিং রয়েছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?
আরও নির্দিষ্টভাবে, আমি দেখতে চাই s1.domain.com
যে প্রদত্ত স্ট্রিং ভেরিয়েবলটিতে উপস্থিত রয়েছে কিনা ।
উত্তর:
কোনও স্ট্রিংয়ে সাবস্ট্রিং রয়েছে কিনা তা জানতে আপনি index
ফাংশনটি ব্যবহার করতে পারেন :
if (index($str, $substr) != -1) {
print "$str contains $substr\n";
}
এটা তোলে প্রথম সংঘটন অবস্থান ফিরে আসবে $substr
মধ্যে $str
, বা -1 যদি সাবস্ট্রিং পাওয়া যায় না।
আরেকটি সম্ভাবনা হ'ল নিয়মিত এক্সপ্রেশন ব্যবহার করা যা পার্ল এর জন্য বিখ্যাত:
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);
}
অথবা, আপনি ইউজেন ওয়াইয়ের মতো কাজ করতে পারেন এবং সূচক ফাংশনটি ব্যবহার করতে পারেন । কেবলমাত্র সতর্কতার শব্দ: সূচকটি -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()
সহজ ক্ষেত্রে রেগেক্সপসের চেয়ে দ্রুত?
=~
, index()
, ~~
এবং match::simple
সমস্ত একটি বিট লাগে awk
\: - -ward ...
domain.com
মিল করতে পারি না subdomain.domain.com
, কোনও ধারণা?
কেস সংবেদনশীল সাবস্ট্রিং উদাহরণ
এটি ইউজিনের উত্তরের একটি বর্ধন, যা স্ট্রিংগুলি পরীক্ষা করার আগে স্ট্রিংগুলিকে লোয়ার কেসে রূপান্তরিত করে:
if (index(lc($str), lc($substr)) != -1) {
print "$str contains $substr\n";
}
:
)।