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

জাভা প্রোগ্রাম: স্ট্রিংয়ে ১ এবং ২ বাদ দিয়ে বাকি সব সংখ্যা মুছে ফেলা


সমস্যা

একটি স্ট্রিং থেকে ১ এবং ২ বাদ দিয়ে বাকি সব ডিজিট (০, ৩-৯) মুছে ফেলা দরকার।

সমাধান কৌশল

  1. রেজেক্স `(?<!\\d)1(?!\\d)` দিয়ে একক '১' ম্যাচ করুন (লুকআহেড/লুকবিহাইন্ড ব্যবহার করে) এবং `one` দিয়ে রিপ্লেস করুন।
  2. রেজেক্স `(?<!\\d)2(?!\\d)` দিয়ে একক '২' ম্যাচ করুন এবং `two` দিয়ে রিপ্লেস করুন।
  3. বাকি সব ডিজিট `\\s*\\d+` দিয়ে ম্যাচ করে খালি স্ট্রিং দিয়ে রিপ্লেস করুন।

কোড উদাহরণ

import java.util.Scanner;

public class RemoveNumbersExcept12 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("একটি স্ট্রিং লিখুন: ");
        String input = sc.nextLine();
        
        // একক '1' ম্যাচ (লুকবিহাইন্ড + লুকআহেড)
        String regex1 = "(?one, 2->two, বাকি ডিজিট->খালি
        String result = input.replaceAll(regex1, "one")
                            .replaceAll(regex2, "two")
                            .replaceAll("\\s*\\d+", "");
        
        System.out.println("ফলাফল: " + result);
    }
}

আউটপুট উদাহরণ

একটি স্ট্রিং লিখুন: sample 1 2 3 4 5 6
ফলাফল: sample one two

রেজেক্স ব্যাখ্যা

রেজেক্সঅর্থ
(?<!\\d)নেগেটিভ লুকবিহাইন্ড: আগে ডিজিট নেই
1লিটারেল '১'
(?!\\d)নেগেটিভ লুকআহেড: পরে ডিজিট নেই
\\s*\\d+ঐচ্ছিক স্পেস + এক বা অধিক ডিজিট

দ্রষ্টব্য

  • লুকআরাউন্ড (`(?
  • এটি নিশ্চিত করে যে '১' বা '২' একটি স্বতন্ত্র সংখ্যা, বড় সংখ্যার অংশ নয় (যেমন ১২, ২১, ১২৩)।
  • `replaceAll` চেইনিংয়ের ক্রম গুরুত্বপূর্ণ: আগে ১ ও ২ হ্যান্ডেল করুন, তারপর বাকি ডিজিট।

সারসংক্ষেপ

লুকআরাউন্ড অ্যাসারশন (`(?

  1. জাভাতে স্ট্রিং থেকে সব নন-অ্যালফাবেটিক্যাল ক্যারেক্টার রিমুভ করা

  2. জাভা প্রোগ্রাম: ফাইলের সব ক্যারেক্টার '#' দিয়ে রিপ্লেস করা ছাড়া একটি নির্দিষ্ট শব্দ

  3. জাভা প্রোগ্রাম: স্ট্রিং-এ স্বরবর্ণ গণনা করা

  4. পাইথন - অক্ষর ও সংখ্যা বাদে সব ক্যারেক্টার সরান