রেজেক্স: স্পেস ও পাঙ্কচুয়েশন ম্যাচ
[!._,'@?\s] — এই ক্যারেক্টার ক্লাসে রয়েছে: এক্সক্লামেশন, ডট, আন্ডারস্কোর, কমা, সিংল কোট, @, ?, এবং হোয়াইটস্পেস (`\s`)।
উদাহরণ ১: ম্যাচ কাউন্ট
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SplitSpacePunctExample1 {
public static void main(String[] args) {
String input = "This is!a.sample\"text,with punctuation!marks";
Pattern p = Pattern.compile("[!._,'@?\\s]");
Matcher m = p.matcher(input);
int count = 0;
while (m.find()) {
count++;
}
System.out.println("ম্যাচ সংখ্যা: " + count);
}
}
আউটপুট উদাহরণ ১
ম্যাচ সংখ্যা: 8
StringTokenizer ব্যবহার করে স্প্লিট (লিগেসি)
import java.util.Scanner;
import java.util.StringTokenizer;
public class SplitSpacePunctExample2 {
public static void main(String[] args) {
String regex = "[!._,'@? ]"; // স্পেস অন্তর্ভুক্ত
Scanner sc = new Scanner(System.in);
System.out.println("একটি স্ট্রিং লিখুন: ");
String input = sc.nextLine();
StringTokenizer str = new StringTokenizer(input, regex);
while (str.hasMoreTokens()) {
System.out.println(str.nextToken());
}
}
}
আউটপুট উদাহরণ ২
একটি স্ট্রিং লিখুন: This is!a.sample text,with punctuation!marks@and_spaces
This
is
a
sample
text
with
punctuation
marks
and
spaces
মডার্ন পদ্ধতি: String.split() বা Pattern.split()
// String.split() - সহজ
String[] tokens = input.split("[!._,'@?\\s]+");
// + কোয়ান্টিফায়ার যোগ করলে একাধিক সিকোয়েন্সিয়াল ডিলিমিটার একই সাথে হ্যান্ডেল হয়
// Pattern.split() - রিয়ুজেবল
Pattern p = Pattern.compile("[!._,'@?\\s]+");
String[] tokens = p.split(input);
StringTokenizer vs split()
| বিষয় | StringTokenizer | String.split() |
|---|---|---|
| রেজেক্স সাপোর্ট | না (লিটারেল ডিলিমিটার) | হ্যাঁ (ফুল রেজেক্স) |
| খালি টোকেন | আড়াল করে | রাখে (লিমিট নেগেটিভ হলে) |
| পারফরম্যান্স | ফাস্ট (সিম্পল কেস) | স্লোওয়ার (রেজেক্স কম্পাইল) |
| স্ট্যাটাস | লিগেসি (ডিসকourageড) | স্ট্যান্ডার্ড |
সারসংক্ষেপ
স্পেস ও পাঙ্কচুয়েশন দিয়ে স্ট্রিং স্প্লিট করার জন্য `[!._,'@?\\s]+` রেজেক্স ব্যবহার করুন। `String.split()` বা `Pattern.split()` মডার্ন এবং রেজেক্স-ফ্রেন্ডলি। `StringTokenizer` লিগেসি, এভয়েড করুন। `+` কোয়ান্টিফায়ার যোগ করলে একাধিক সিকোয়েন্সিয়াল ডিলিমিটার একসাথে হ্যান্ডেল হয়।