- 1 ১. পরিচিতি: জাভাতে স্ট্রিং অনুসন্ধান কেন গুরুত্বপূর্ণ
- 2 ২. contains() মেথডের মৌলিক সিনট্যাক্স এবং বৈশিষ্ট্য
- 3 ৩. ব্যবহারিক উদাহরণ এবং গুরুত্বপূর্ণ বিবেচনা
- 4 4. contains() এর সাথে প্রায়ই তুলনা করা পদ্ধতিগুলি
- 5 5. সাধারণ ব্যবহার ক্ষেত্র এবং নমুনা কোড
- 6 6. পারফরম্যান্স বিবেচনা
- 7 ৭. অন্যান্য প্রোগ্রামিং ভাষার সঙ্গে তুলনা
- 8 ৮. প্রায়শই জিজ্ঞাসিত প্রশ্নাবলি (FAQ)
- 8.1 Q1. contains() কি কেস‑সেন্সিটিভ?
- 8.2 Q2. রেগুলার এক্সপ্রেশন ব্যবহার করে আংশিক মিল কীভাবে পরীক্ষা করা যায়?
- 8.3 Q3. যদি আমি contains()‑কে null‑এ কল করি তবে কী হয়?
- 8.4 Q4. যদি আমি contains()‑এ একটি খালি স্ট্রিং (“”) পাঠাই তবে কী হয়?
- 8.5 Q5. কি contains() একসাথে একাধিক কীওয়ার্ড অনুসন্ধান করতে পারে?
- 8.6 Q6. কখন contains() এবং indexOf() ব্যবহার করা উচিত?
- 9 ৯. উপসংহার
১. পরিচিতি: জাভাতে স্ট্রিং অনুসন্ধান কেন গুরুত্বপূর্ণ
স্ট্রিং ম্যানিপুলেশন জাভা প্রোগ্রামিংয়ে সবচেয়ে বেশি ব্যবহৃত অপারেশনগুলোর একটি।
ইউজার ইনপুট চেক করা, ফাইলের বিষয়বস্তু পার্স করা, অথবা নির্দিষ্ট কীওয়ার্ড অনুসন্ধান করা—এই সব ক্ষেত্রে আপনাকে প্রায়ই নির্ধারণ করতে হয় যে কোনো নির্দিষ্ট শব্দটি দেওয়া স্ট্রিংয়ের মধ্যে আছে কি না।
এই প্রয়োজন মেটাতে জাভা একটি সুবিধাজনক মেথড contains() প্রদান করে।
এই মেথডের মাধ্যমে আপনি সহজেই জানতে পারেন একটি স্ট্রিং আংশিকভাবে অন্য একটি স্ট্রিংকে ধারণ করে কি না।
উদাহরণস্বরূপ, যদি আপনি কোনো এরর মেসেজে নির্দিষ্ট কীওয়ার্ড আছে কি না চেক করতে চান, contains() এক লাইনের কোডে তা করতে সক্ষম।
বিশেষত বড় পরিমাণের টেক্সট জড়িত পরিস্থিতিতে—যেমন ওয়েব অ্যাপ্লিকেশন, API প্রসেসিং, অথবা লগ বিশ্লেষণ—contains() মেথড কোডের পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা উল্লেখযোগ্যভাবে বাড়িয়ে দেয়। তবে কেস সেন্সিটিভিটি এবং null এর সম্ভাবনা ইত্যাদি গুরুত্বপূর্ণ বিষয়ও বিবেচনা করতে হয়।
এই নিবন্ধে জাভার contains() মেথডকে বিশদভাবে ব্যাখ্যা করা হয়েছে—মৌলিক ব্যবহার, সাধারণ ভুল, অন্যান্য মেথডের সঙ্গে পার্থক্য এবং ব্যবহারিক প্রয়োগ পর্যন্ত। আমাদের লক্ষ্য হল নবীনদের পাশাপাশি বাস্তব প্রকল্পে জাভা ব্যবহারকারী ডেভেলপারদের জন্যও উপকারী তথ্য প্রদান করা।
২. contains() মেথডের মৌলিক সিনট্যাক্স এবং বৈশিষ্ট্য
জাভার contains() মেথড নির্ধারণ করে যে একটি স্ট্রিং আংশিকভাবে অন্য একটি স্ট্রিংকে ধারণ করে কি না।
এর সিনট্যাক্স খুবই সহজ, তবু এটি দৈনন্দিন প্রোগ্রামিং কাজগুলোতে অত্যন্ত ব্যবহারিক এবং প্রায়ই ব্যবহৃত হয়।
মৌলিক সিনট্যাক্স
boolean result = targetString.contains(searchString);
এই মেথডটি String ক্লাসের অন্তর্ভুক্ত এবং একটি CharSequence (সাধারণত একটি String) কে আর্গুমেন্ট হিসেবে গ্রহণ করে।
এর রিটার্ন ভ্যালু boolean: যদি টার্গেট স্ট্রিংটি প্রদত্ত সাবস্ট্রিংটি ধারণ করে তবে true, না হলে false।
নমুনা কোড
String message = "Java programming is fun!";
boolean hasKeyword = message.contains("programming");
System.out.println(hasKeyword); // Output: true
উপরের উদাহরণে, সাবস্ট্রিং "programming" টার্গেট স্ট্রিংয়ে উপস্থিত থাকায় contains() true রিটার্ন করে।
মেথডের বৈশিষ্ট্য
- শুধুমাত্র আংশিক মেলামেশা পরীক্ষা করে: যদি সঠিক মেলামেশা দরকার হয়, তবে
equals()ব্যবহার করুন। - কেস-সেন্সিটিভ: উদাহরণস্বরূপ,
"Java"এবং"java"ভিন্ন হিসেবে বিবেচিত হয় (বিস্তারিত পরে ব্যাখ্যা করা হবে)। - রেগুলার এক্সপ্রেশন সমর্থন করে না: এটি শুধুমাত্র স্ট্রিং উপস্থিতি পরীক্ষা করে, প্যাটার্ন ম্যাচিংয়ের জন্য
matches()অথবাPatternক্লাস ব্যবহার করতে হবে।
null পাস করা হলে আচরণ
contains()‑এ null পাস করলে NullPointerException ঘটবে। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি এক্সসেপশন ছুঁড়বে:
String text = null;
System.out.println(text.contains("test")); // Exception occurs
একইভাবে, যদি টার্গেট স্ট্রিং নিজেই null হয়, তবুও একই এক্সসেপশন ঘটবে। তাই contains() কল করার আগে null চেক করা অত্যন্ত সুপারিশ করা হয়।
৩. ব্যবহারিক উদাহরণ এবং গুরুত্বপূর্ণ বিবেচনা
জাভার contains() মেথডটি খুবই স্বজ্ঞাত এবং সুবিধাজনক, তবে ভুল ব্যবহার অপ্রত্যাশিত বাগ বা অকার্যকর কোডের দিকে নিয়ে যেতে পারে। এই অংশে contains()‑এর মৌলিক ব্যবহার এবং আপনার জানা প্রয়োজনীয় মূল বিষয়গুলো ব্যাখ্যা করা হয়েছে।
৩-১. মৌলিক ব্যবহার উদাহরণ
নিম্নলিখিত কোডটি টার্গেট স্ট্রিংটি নির্দিষ্ট কীওয়ার্ড ধারণ করে কি না চেক করার একটি সহজ উদাহরণ দেখায়:
String sentence = "今日はJavaの勉強をしています。";
if (sentence.contains("Java")) {
System.out.println("Javaが含まれています。");
} else {
System.out.println("Javaは含まれていません。");
}
যেমন দেখা যায়, contains() প্রায়ই if স্টেটমেন্টের সঙ্গে যুক্ত হয়ে শর্তাধীন ব্রাঞ্চিং সম্পাদন করে।
৩-২. কেস সেন্সিটিভিটি
contains() মেথডটি কেস-সেন্সিটিভ। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি false রিটার্ন করে:
String text = "Welcome to Java";
System.out.println(text.contains("java")); // false
In such cases, it is common to convert the strings to lowercase (or uppercase) before comparison:
String text = "Welcome to Java";
System.out.println(text.toLowerCase().contains("java")); // true
This approach helps eliminate differences in input case (e.g., user input).
3-3. null এবং খালি স্ট্রিংগুলোর পরিচালনা
One of the most important considerations when using contains() is the handling of null.
If either the target string or the argument is null, a NullPointerException will occur.
String text = null;
System.out.println(text.contains("test")); // Runtime error
To avoid this issue, always add a null check:
if (text != null && text.contains("test")) {
// Safe to process
}
Also note:
Passing an empty string ("") always returns true.
String sample = "test";
System.out.println(sample.contains("")); // true
However, this behavior is rarely useful in practice and can unintentionally lead to bugs if empty strings are passed unintentionally.
3-4. একাধিক কীওয়ার্ড অনুসন্ধান সমর্থন করে না
contains() can check only one keyword at a time.
To check multiple keywords, you must either call contains() multiple times or use the Stream API.
String target = "エラーコード123:アクセス拒否";
if (target.contains("エラー") || target.contains("拒否")) {
System.out.println("問題のあるメッセージです。");
}
Or, for dynamic keyword sets:
List<String> keywords = Arrays.asList("エラー", "障害", "失敗");
boolean found = keywords.stream().anyMatch(target::contains);
4. contains() এর সাথে প্রায়ই তুলনা করা পদ্ধতিগুলি
Java স্ট্রিং তুলনা বা নির্দিষ্ট সাবস্ট্রিং আছে কিনা পরীক্ষা করার জন্য বেশ কিছু পদ্ধতি প্রদান করে। এদের মধ্যে, contains() “আংশিক মিল” এর জন্য ব্যবহৃত হয়, তবে অন্যান্য পদ্ধতিগুলিও সমান উদ্দেশ্য পূরণ করে। এই বিভাগে সেই পদ্ধতিগুলোর বৈশিষ্ট্য ও পার্থক্য ব্যাখ্যা করা হয়েছে যাতে আপনি সেগুলো যথাযথভাবে ব্যবহার করতে পারেন।
4-1. equals() থেকে পার্থক্য: সঠিক মিল বনাম আংশিক মিল
equals() determines whether two strings are exactly identical.
In contrast, contains() checks for partial matches.
String a = "Java";
String b = "Java";
System.out.println(a.equals(b)); // true: Exact match
System.out.println(a.contains("av")); // true: Partial match
Main differences:
| Comparison | equals() | contains() |
|---|---|---|
| Match Type | Exact match | Partial match |
| Case Sensitivity | Sensitive | Sensitive |
| Argument Type | Object | CharSequence |
Usage Guideline:
Use equals() when values must match exactly (e.g., ID verification).
Use contains() when partial matches are acceptable (e.g., keyword search).
4-2. indexOf() থেকে পার্থক্য: অবস্থান প্রয়োজন কিনা
The indexOf() method can also be used to check whether a substring exists within a string.
The difference is that indexOf() returns the starting index of the substring if found.
If the substring is not found, it returns -1.
String text = "Hello, Java World!";
System.out.println(text.indexOf("Java")); // 7
System.out.println(text.indexOf("Python")); // -1
You can also use indexOf() to replicate the behavior of contains():
if (text.indexOf("Java") >= 0) {
System.out.println("It is contained.");
}
Usage guideline:
If you don’t need the index, contains() is more readable and preferable.
4-3. matches() থেকে পার্থক্য: রেগুলার এক্সপ্রেশন সমর্থন
The matches() method checks whether a string fully matches a given regular expression.
In contrast, contains() checks only for literal substring matches and does not support regex.
String text = "abc123";
System.out.println(text.matches(".*123")); // true
System.out.println(text.contains(".*123")); // false (not regex)
If you want regex-based partial matching, use the Pattern class:
4-4. বৈশিষ্ট্য তুলনার সারাংশ
| Method | Purpose | Return Type | Regex Support | Use Case |
|---|---|---|---|---|
contains() | Partial match | boolean | No | Keyword search |
equals() | Exact match | boolean | No | ID/password checks |
indexOf() | Get match position | int | No | Index-based processing |
matches() | Regex match | boolean | Yes | Find pattern-based strings |
5. সাধারণ ব্যবহার ক্ষেত্র এবং নমুনা কোড
Java-এর contains() মেথডটি সহজ হলেও বাস্তব উন্নয়ন পরিস্থিতিতে ব্যাপকভাবে ব্যবহৃত হয়।
সাধারণ ব্যবহারিক ক্ষেত্রগুলির মধ্যে রয়েছে ব্যবহারকারী ইনপুট যাচাই, লগ বিশ্লেষণ, এবং ফিল্টারিং অপারেশন।
এই বিভাগে সংশ্লিষ্ট কোডসহ ব্যবহারিক উদাহরণগুলি কভার করা হয়েছে।
5-1. ব্যবহারকারী ইনপুট যাচাই (নিষিদ্ধ শব্দ সনাক্তকরণ)
ফর্ম বা চ্যাট অ্যাপ্লিকেশনে, আপনাকে নির্ধারণ করতে হতে পারে যে নির্দিষ্ট নিষিদ্ধ শব্দগুলি অন্তর্ভুক্ত আছে কি না।
String input = "このアプリは最悪だ";
String banned = "最悪";
if (input.contains(banned)) {
System.out.println("不適切な言葉が含まれています。");
}
একাধিক NG শব্দ পরিচালনা:
List<String> bannedWords = Arrays.asList("最悪", "バカ", "死ね");
for (String word : bannedWords) {
if (input.contains(word)) {
System.out.println("不適切な言葉が含まれています: " + word);
break;
}
}
5-2. লগ ফাইল বিশ্লেষণ (নির্দিষ্ট বার্তা সনাক্তকরণ)
সিস্টেম বা অ্যাপ্লিকেশন লগ বিশ্লেষণ করার সময়, আপনি হয়তো শুধুমাত্র সেই লাইনগুলো বের করতে চান যেগুলোতে ERROR বা WARN এর মতো নির্দিষ্ট কীওয়ার্ড রয়েছে।
List<String> logs = Arrays.asList(
"[INFO] サーバーが起動しました",
"[ERROR] データベース接続失敗",
"[WARN] メモリ使用率が高い"
);
for (String log : logs) {
if (log.contains("ERROR")) {
System.out.println("エラー発生ログ: " + log);
}
}

5-3. তালিকায় স্ট্রিং ফিল্টারিং (Stream API ব্যবহার করে)
বড় ডেটাসেট পরিচালনা করার সময়, নির্দিষ্ট সাবস্ট্রিং ধারণকারী উপাদানগুলো শুধুমাত্র বের করতে Stream API ব্যবহার করুন:
List<String> users = Arrays.asList("tanaka@example.com", "sato@gmail.com", "yamada@yahoo.co.jp");
List<String> gmailUsers = users.stream()
.filter(email -> email.contains("@gmail.com"))
.collect(Collectors.toList());
System.out.println(gmailUsers); // [sato@gmail.com]
5-4. HTTP রিকোয়েস্ট হেডার বা URL পার্সিং
ওয়েব ডেভেলপমেন্টে, রাউটিং বা ডিভাইস-নির্দিষ্ট হ্যান্ডলিংয়ের জন্য User-Agent বা URL-এ সাবস্ট্রিং চেক করা প্রয়োজন হতে পারে।
String userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X)";
if (userAgent.contains("iPhone")) {
System.out.println("スマートフォンからのアクセスです。");
}
5-5. ফাইল পাথ বা এক্সটেনশন চেক করা
ফাইলের পাথ ব্যবহার করে তার ধরন নির্ধারণ করতে:
String filePath = "/usr/local/data/sample.csv";
if (filePath.contains(".csv")) {
System.out.println("CSVファイルです。");
}
দ্রষ্টব্য:
ফাইল এক্সটেনশন চেক করার সময়, endsWith(".csv") প্রায়শই আরও সঠিক হয়।
ব্যবহারিক বিবেচনা
- যখন নির্ভুলতা প্রয়োজন, তখন নরমালাইজেশন প্রয়োগ করুন (যেমন,
toLowerCase(),trim())। - বৃহৎ স্কেলের ডেটার জন্য, Stream API বা রেগেক্স বিবেচনা করুন।
- মনে রাখবেন
contains()আংশিক ম্যাচ—নিরাপদ লজিকের জন্য অন্যান্য শর্তের সঙ্গে সংযুক্ত করুন।
6. পারফরম্যান্স বিবেচনা
যদিও contains() মেথডটি চমৎকার পাঠযোগ্যতা এবং সরলতা প্রদান করে, বড় ডেটাসেট পরিচালনা বা পুনরাবৃত্তি অপারেশন চালানোর সময় এর পারফরম্যান্স প্রভাব বিবেচনা করা প্রয়োজন।
এই বিভাগে contains() এর প্রক্রিয়াকরণ খরচ এবং উন্নত দক্ষতার জন্য বিকল্প পদ্ধতিগুলি ব্যাখ্যা করা হয়েছে।
6-1. contains() এর অভ্যন্তরীণ আচরণ এবং সময় জটিলতা
contains() মেথডটি লক্ষ্য স্ট্রিংটি শুরু থেকে ধারাবাহিকভাবে অনুসন্ধান করে সাবস্ট্রিংটি খুঁজে বের করে।
অভ্যন্তরীণভাবে, এটি indexOf() মেথডের উপর নির্ভর করে, এবং এর সর্বোচ্চ ক্ষেত্রে সময় জটিলতা হল:
O(n * m)
– n = লক্ষ্য স্ট্রিংয়ের দৈর্ঘ্য
– m = অনুসন্ধান স্ট্রিংয়ের দৈর্ঘ্য
ভারী প্রক্রিয়াকরণের উদাহরণ:
for (String line : hugeTextList) {
if (line.contains("error")) {
// processing
}
}
বড় লুপের মধ্যে পুনরাবৃত্তি হলে এটি পারফরম্যান্সে উল্লেখযোগ্য প্রভাব ফেলতে পারে।
6-2. ঘন ঘন অনুসন্ধানের সময় পারফরম্যান্স উন্নত করার কৌশল
বড় ডেটাসেটের মধ্যে contains() বারবার ব্যবহার করার সময়, নিম্নলিখিত কৌশলগুলি প্রক্রিয়াকরণ গতি বাড়াতে পারে:
• সব স্ট্রিংকে পূর্বেই লোয়ারকেসে রূপান্তর করুন
প্রতিটি তুলনার সময় toLowerCase() কল করার পরিবর্তে, স্ট্রিংগুলোকে আগে থেকেই নরমালাইজ করুন:
List<String> normalizedList = originalList.stream()
.map(String::toLowerCase)
.collect(Collectors.toList());
• স্ট্রিম API‑কে parallel() ব্যবহার করে সমান্তরাল প্রক্রিয়াকরণ করুন
CPU কোর ব্যবহার করে অনুসন্ধান দ্রুত করুন:
List<String> result = hugeTextList.parallelStream()
.filter(line -> line.contains("keyword"))
.collect(Collectors.toList());
• জটিল অনুসন্ধান প্যাটার্নের জন্য রেগুলার এক্সপ্রেশন ব্যবহার করুন
যদি শর্তগুলো জটিল হয় এবং একক রেজেক্সে প্রকাশ করা যায়, তবে Pattern আরও ভাল পারফরম্যান্স দিতে পারে:
Pattern pattern = Pattern.compile("error|fail|fatal");
for (String log : logs) {
if (pattern.matcher(log).find()) {
// matched
}
}
৬-৩. মেমরি দক্ষতা এবং পুনঃব্যবহারযোগ্যতা বিবেচনা
যে অপারেশনগুলো প্রায়ই স্ট্রিং রূপান্তর করে—যেমন toLowerCase() বা substring()—সেগুলো অনেক অপ্রয়োজনীয় স্ট্রিং অবজেক্ট তৈরি করতে পারে, যা মেমরি ব্যবহারকে প্রভাবিত করে।
এটি দীর্ঘমেয়াদী অ্যাপ্লিকেশন বা সার্ভার‑সাইড প্রক্রিয়াকরণের জন্য বিশেষভাবে গুরুত্বপূর্ণ।
মূল বিষয়গুলো:
- অপ্রয়োজনীয় স্ট্রিং ইনস্ট্যান্স তৈরি করা এড়িয়ে চলুন।
- বড় ডেটাসেটের জন্য বাফারিং বা চাঙ্ক প্রক্রিয়াকরণ বিবেচনা করুন।
- পুনরাবৃত্ত
contains()ফলাফল ক্যাশ করা নির্দিষ্ট ক্ষেত্রে পারফরম্যান্স উন্নত করতে পারে।
৭. অন্যান্য প্রোগ্রামিং ভাষার সঙ্গে তুলনা
Java‑এর contains() মেথড সহজ, নির্ভরযোগ্য সাবস্ট্রিং ম্যাচিং প্রদান করে, তবে অন্যান্য ভাষাও নিজস্ব বৈশিষ্ট্যসহ অনুরূপ ফিচার সরবরাহ করে।
এই অংশে Python, JavaScript এবং C#‑এ সাবস্ট্রিং চেকিং তুলনা করে পার্থক্য ও সাদৃশ্য তুলে ধরা হয়েছে।
৭-১. পাইথন: in অপারেটর দিয়ে সহজ আংশিক মিল
Python‑এ আপনি in অপারেটর ব্যবহার করে সাবস্ট্রিং অন্তর্ভুক্তি পরীক্ষা করতে পারেন:
text = "Hello, Python!"
if "Python" in text:
print("含まれています")
এই সিনট্যাক্সটি অত্যন্ত পাঠযোগ্য—প্রায় স্বাভাবিক ভাষার মতো—and শিখতে খুব কম সময় লাগে।
পার্থক্য ও নোটসমূহ:
inএকটি ভাষা অপারেটর, মেথড নয়।- Python‑এ স্ট্রিং তুলনা কেস‑সেন্সিটিভ।
Noneব্যবহার করলে এক্সসেপশন ঘটে; নাল চেক প্রয়োজন।
৭-২. জাভাস্ক্রিপ্ট: includes() দিয়ে আংশিক মিল
JavaScript (ES6+)‑এ আপনি includes() মেথড ব্যবহার করতে পারেন:
const text = "JavaScript is fun";
console.log(text.includes("fun")); // true
এই মেথডটি Java‑এর contains()‑এর সঙ্গে খুবই সাদৃশ্যপূর্ণ এবং মানসিকভাবে সহজে স্থানান্তরযোগ্য।
পার্থক্য ও নোটসমূহ:
undefinedপাস করলে এক্সসেপশন না দিয়ে শুধুfalseরিটার্ন করে।includes()অ্যারেগুলিতেও কাজ করে, যা এর বহুমুখিতা বাড়ায়।
৭-৩. C#: Contains() – Java‑এর সমতুল্য
C#‑এও Contains() মেথড রয়েছে, যা Java‑এর সঙ্গে সমান আচরণ করে:
string text = "Welcome to C#";
bool result = text.Contains("C#");
পার্থক্য ও নোটসমূহ:
- C#‑এর
Contains()ডিফল্টভাবে কেস‑সেন্সিটিভ, তবেStringComparison.OrdinalIgnoreCaseব্যবহার করে কেস‑ইগনোর করা যায়। nullপাস করলেArgumentNullExceptionথ্রো হয়।
৭-৪. ভাষা অনুযায়ী তুলনামূলক টেবিল
| Language | Example Syntax | Case Sensitivity | Notes |
|---|---|---|---|
| Java | "abc".contains("a") | Sensitive | Throws exception on null |
| Python | "a" in "abc" | Sensitive | Most intuitive syntax |
| JavaScript | "abc".includes("a") | Sensitive | Also works for arrays |
| C# | "abc".Contains("a") | Sensitive (configurable) | Comparison mode can be chosen |
সারাংশ: আপনার ব্যবহারের জন্য সঠিক সিনট্যাক্স নির্বাচন করুন
সাবস্ট্রিং চেকিং বিভিন্ন ভাষায় সাধারণ প্রয়োজন, তবে প্রতিটি ভাষা নিজস্ব পদ্ধতি বা সিনট্যাক্স প্রদান করে।
Java‑এর contains() স্থিতিশীলতা ও স্পষ্টতা প্রদান করে, যা এন্টারপ্রাইজ সিস্টেম ও রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশনের জন্য উপযুক্ত।
অন্যদিকে Python ও JavaScript সহজ ও সংক্ষিপ্ত সিনট্যাক্স দেয়, যা হালকা স্ক্রিপ্ট বা দ্রুত প্রোটোটাইপিংয়ের জন্য আদর্শ।
উভয় সাধারণ ধারণা ও প্রতিটি ভাষার নির্দিষ্ট বৈশিষ্ট্য বোঝার মাধ্যমে আপনি বিভিন্ন ভাষায় নিরাপদ ও কার্যকর কোড লিখতে সক্ষম হবেন।
৮. প্রায়শই জিজ্ঞাসিত প্রশ্নাবলি (FAQ)
নিচে Java‑এর contains() মেথড সম্পর্কিত সাধারণ প্রশ্নগুলো দেওয়া হয়েছে—যা আপনাকে জটিল বিষয়গুলো বুঝতে এবং সাধারণ ভুল এড়াতে সাহায্য করবে।
Q1. contains() কি কেস‑সেন্সিটিভ?
হ্যাঁ, এটি কেস‑সেন্সিটিভ।
উদাহরণস্বরূপ, "Java".contains("java") রিটার্ন করে false।
সমাধান:
String input = "Welcome to Java";
boolean result = input.toLowerCase().contains("java");
Q2. রেগুলার এক্সপ্রেশন ব্যবহার করে আংশিক মিল কীভাবে পরীক্ষা করা যায়?
contains() নিয়মিত অভিব্যক্তি সমর্থন করে না।
matches() অথবা Pattern ক্লাস ব্যবহার করুন।
উদাহরণ (সংখ্যা প্যাটার্ন যাচাই করা):
import java.util.regex.Pattern;
import java.util.regex.Matcher;
String text = "注文番号: A123456";
Pattern pattern = Pattern.compile("A\\d+");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println("パターンに一致しました。");
}
Q3. যদি আমি contains()‑কে null‑এ কল করি তবে কী হয়?
একটি NullPointerException নিক্ষিপ্ত হবে।
String target = null;
System.out.println(target.contains("test")); // Error
সমাধান:
if (target != null && target.contains("test")) {
System.out.println("含まれています。");
}
Q4. যদি আমি contains()‑এ একটি খালি স্ট্রিং (“”) পাঠাই তবে কী হয়?
এটি সর্বদা true রিটার্ন করে।
String text = "Java";
System.out.println(text.contains("")); // true
যদিও এটি অফিসিয়াল স্পেসিফিকেশনের অংশ, এই আচরণটি খুব কমই উপযোগী এবং যদি খালি স্ট্রিংগুলি ইচ্ছাকৃত না হয় তবে অপ্রত্যাশিত বাগের কারণ হতে পারে।
Q5. কি contains() একসাথে একাধিক কীওয়ার্ড অনুসন্ধান করতে পারে?
না। প্রতিটি কল শুধুমাত্র একটি কীওয়ার্ড পরীক্ষা করে।
String text = "本日はシステムエラーが発生しました";
if (text.contains("エラー") || text.contains("障害") || text.contains("失敗")) {
System.out.println("問題が検出されました。");
}
ডাইনামিক পদ্ধতি:
List<String> keywords = Arrays.asList("エラー", "障害", "失敗");
boolean found = keywords.stream().anyMatch(text::contains);
Q6. কখন contains() এবং indexOf() ব্যবহার করা উচিত?
contains() একটি বুলিয়ান রিটার্ন করে, যেখানে indexOf() একটি সংখ্যাসূচক সূচক রিটার্ন করে।
- যখন আপনি শুধুমাত্র জানতে চান সাবস্ট্রিংটি আছে কি না, তখন
contains()ব্যবহার করুন। - যখন আপনাকে অবস্থানও দরকার, তখন
indexOf()ব্যবহার করুন।String text = "Error: Disk full"; if (text.contains("Error")) { int pos = text.indexOf("Error"); System.out.println("Position: " + pos); }
৯. উপসংহার
Java‑এর contains() মেথডটি একটি শক্তিশালী এবং সুবিধাজনক টুল, যা নির্ধারণ করে কোনো নির্দিষ্ট সাবস্ট্রিং একটি স্ট্রিংয়ের মধ্যে রয়েছে কিনা। এটি ব্যবহারকারী ইনপুট ভ্যালিডেশন, লগ বিশ্লেষণ এবং ডেটা ফিল্টারিং সহ বিভিন্ন পরিস্থিতিতে ব্যাপকভাবে ব্যবহৃত হয়।
এই প্রবন্ধে, আমরা নিম্নলিখিত বিষয়গুলি আলোচনা করেছি:
- মৌলিক সিনট্যাক্স এবং রিটার্ন মান
- কেস সংবেদনশীলতা এবং তা কীভাবে হ্যান্ডেল করবেন
- null এবং খালি স্ট্রিং হ্যান্ডেল করা
- অন্যান্য স্ট্রিং তুলনা পদ্ধতির সঙ্গে পার্থক্য
- প্রায়োগিক ব্যবহার ক্ষেত্র: ভ্যালিডেশন, লগ অনুসন্ধান, স্ট্রিম প্রক্রিয়াকরণ
- পারফরম্যান্স বিবেচনা এবং অপ্টিমাইজেশন টেকনিক
- Python, JavaScript এবং C# এর সঙ্গে তুলনা
- প্রায়শই জিজ্ঞাসিত প্রশ্ন এবং ট্রাবলশুটিং টিপস
যদিও contains() স্বজ্ঞাত এবং বহুমুখী, এর ব্যবহারকে সতর্কতার সঙ্গে মূল্যায়ন করা উচিত বৃহৎ ডেটাসেট, বারবার কল, অথবা জটিল অনুসন্ধান শর্ত যুক্ত ক্ষেত্রে। নরমালাইজেশন, প্যারালেল প্রসেসিং, রেজেক্স এবং ক্যাশিং কৌশল সংযুক্ত করে আপনি পারফরম্যান্স এবং পাঠযোগ্যতা উভয়ই বজায় রাখতে পারেন।
contains() জাভায় স্ট্রিং নিয়ে কাজ করার মৌলিক অংশ হওয়ায়, আমরা আশা করি এই প্রবন্ধটি আপনাকে আপনার ডেভেলপমেন্ট প্রকল্পে এটি আরও নিরাপদ এবং কার্যকরভাবে ব্যবহার করতে সহায়তা করবে।

