एंड्रॉइड में String.contains() से सबस्ट्रिंग खोज करना
यह ट्यूटोरियल दिखाता है कि EditText इनपुट में कोई विशिष्ट सबस्ट्रिंग (जैसे "tutorialspoint") मौजूद है या नहीं, contains() विधि से कैसे जांचें।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें।
चरण 2: लेआउट (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="24dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:hint="टेक्स्ट दर्ज करें"
android:layout_height="wrap_content" />
<Button
android:id="@+id/click"
android:text="खोजें"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp" />
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:textSize="25sp"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textColor="#333" />
</LinearLayout>
चरण 3: MainActivity कोड (java/MainActivity.java)
package com.example.myapplication;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
EditText nameEditText;
Button button;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nameEditText = findViewById(R.id.name);
button = findViewById(R.id.click);
textView = findViewById(R.id.textview);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String input = nameEditText.getText().toString().trim();
if (!input.isEmpty()) {
// contains() - केस-सेंसिटिव
boolean containsTutorialspoint = input.contains("tutorialspoint");
textView.setText("परिणाम: " + containsTutorialspoint);
// केस-इनसेंसिटिव
boolean containsCI = input.toLowerCase().contains("tutorialspoint");
textView.append("\nकेस-इनसेंसिटिव: " + containsCI);
} else {
nameEditText.setError("कृपया टेक्स्ट दर्ज करें");
}
}
});
}
}
contains() मुख्य बिंदु
- केस-सेंसिटिव: "Tutorialspoint" ≠ "tutorialspoint"
- खाली स्ट्रिंग "" हमेशा
trueलौटाता है - नल पर
NullPointerExceptionफेंकता है - इंटरनली
indexOf() >= 0के समान
वैकल्पिक खोज विधियाँ
| विधि | उपयोग | केस-सेंसिटिव |
|---|---|---|
contains() | सबस्ट्रिंग मौजूद है? | हां |
indexOf() | पहला इंडेक्स प्राप्त करें | हां |
lastIndexOf() | अंतिम इंडेक्स प्राप्त करें | हां |
matches(regex) | Regex पैटर्न मैच | हां (डिफॉल्ट) |
Pattern/Collator | एडवांस्ड/लोकेल-अवेयर | कॉन्फिगरेबल |
केस-इनसेंसिटिव विकल्प
// 1. toLowerCase() - सरल लेकिन नया स्ट्रिंग बनाता है
boolean found = input.toLowerCase().contains("tutorialspoint");
// 2. Pattern - अधिक नियंत्रण
Pattern pattern = Pattern.compile("tutorialspoint", Pattern.CASE_INSENSITIVE);
boolean found = pattern.matcher(input).find();
// 3. Apache Commons Lang (लाइब्रेरी)
boolean found = StringUtils.containsIgnoreCase(input, "tutorialspoint");
// 4. Kotlin एक्सटेंशन
fun String.containsIgnoreCase(String other) =
this.toLowerCase().contains(other.toLowerCase())
व्यावहारिक उदाहरण
// स्पैम फिल्टर
String[] spamWords = {"free", "win", "prize", "click here"};
for (String word : spamWords) {
if (message.toLowerCase().contains(word)) {
markAsSpam();
break;
}
}
// कॉमांड पार्सिंग
if (input.contains(":")) {
String[] parts = input.split(":", 2);
String command = parts[0].trim();
String args = parts[1].trim();
}
ऐप टेस्ट करें
"tutorialspoint is best" दर्ज करें → true. "Tutorialspoint" दर्ज करें → false (केस-सेंसिटिव)।