কম্পিউটার টিউটোরিয়াল

জাভা রেগুলার এক্সপ্রেশন: সংখ্যা ও শব্দের মাঝে স্পেস যোগ করা


রেগুলার এক্সপ্রেশনে প্যαρেন্থেসিস দিয়ে এক্সপ্রেশনগুলো আলাদা করে ম্যাচড গ্রুপ তৈরি করা যায়। নিচের রেগুলার এক্সপ্রেশনে প্রথম গ্রুপটি ডিজিট এবং দ্বিতীয় গ্রুপটি ইংরেজি অক্ষরকে মিল করে:

(\d)([A-Za-z])

সংক্ষেপে, এটি ইনপুট স্ট্রিং-এ সেই অংশকে মিল করে যেখানে একটি ডিজিটের পর একটি অক্ষর আছে।

যেহেতু $1 গ্রুপ ১ এবং $2 গ্রুপ ২ নির্দেশ করে, তাই উপরের জাভা রেগুলার এক্সপ্রেশনকে $1 $2 দিয়ে রিপ্লেস করলে (String ক্লাসের replace() মেথড ব্যবহার করে) একটি সংখ্যা ও শব্দের মাঝে স্পেস যোগ হবে।

উদাহরণ ১

import java.util.Scanner;

public class SampleTest {
    public static void main(String args[]) {
        String regex = "(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])";
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();
        
        String result = input.replaceAll("(\\d)([A-Za-z])", "$1 $2");
        System.out.println(result);
    }
}

আউটপুট

Enter input text: 21This 23is 56sample 99text
21 This 23 is 56 sample 99 text

একইভাবে, আপনি দिये गये টেক্সটে সংখ্যা ও অক্ষরের মাঝে স্পেস যোগ করতে পারেন, অর্ডার যেন যেকোনো হোক। उसके জন্য নিচের এক্সপ্রেশনকে স্পেস দিয়ে রিপ্লেস করতে হবে:

(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])

উদাহরণ ২

import java.util.Scanner;

public class SampleTest {
    public static void main(String args[]) {
        String regex = "(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])";
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();
        
        String result = input.replaceAll(regex, " ");
        System.out.println(result);
    }
}

আউটপুট

Enter input text: 21This23is56sample99text
21 This 23 is 56 sample 99 text
  1. জাভায় super() এবং this() এর পার্থক্য

  2. জাভা রেগেক্স দিয়ে ওয়ার্ড ক্যারেক্টার ম্যাচ করা (\w)

  3. জাভাতে StringBuffer এবং StringBuilder এর পার্থক্য

  4. জাভাতে সংখ্যা গণনার প্রোগ্রাম কীভাবে বাস্তবায়ন করবেন?