StringUtils পরিচিতি

StringUtils হল সবচেয়ে বেশি ব্যবহৃত Apache Commons ক্লাস। এটিতে বিভিন্ন ইউটিলিটি এবং পদ্ধতি রয়েছে যা বিকাশকারীদেরকে বয়লারপ্লেট বা বেসিক ক্রিয়াকলাপের জন্য কেবল অপ্রয়োজনীয় কোড লেখা এড়াতে সহায়তা করে।

StringUtils ক্লাসের অনেক পদ্ধতিতে তাদের java.lang.String সমতুল্য রয়েছে কিন্তু, java.lang.String পদ্ধতির বিপরীতে , নাল-নিরাপদ। এর মানে হল যে একটি NullPointerException সবচেয়ে অপ্রত্যাশিত মুহূর্তে নিক্ষেপ করা হয় না

Apache Commons-এ বেশ কয়েকটি পদ্ধতি রয়েছে এবং আমরা সবচেয়ে বেশি ব্যবহৃত কিছুর দিকে নজর দেব।

StringUtils পদ্ধতির তালিকা:

খালি() একটি স্ট্রিং খালি কিনা তা পরীক্ষা করে
সমান() স্ট্রিং তুলনা
তুলনা করা() স্ট্রিং তুলনা
সূচিপত্র() একটি স্ট্রিং মধ্যে একটি সাবস্ট্রিং খোঁজা
lastIndexOf() একটি স্ট্রিং মধ্যে একটি সাবস্ট্রিং খোঁজা
রয়েছে() একটি সাবস্ট্রিং একটি স্ট্রিং এ আছে কিনা তা পরীক্ষা করে
IgnoreCase() রয়েছে কেস উপেক্ষা করে একটি স্ট্রিং-এ একটি সাবস্ট্রিং উপস্থিতির জন্য পরীক্ষা করে
যেকোন() রয়েছে একটি স্ট্রিং এর কোথাও একটি সাবস্ট্রিং ঘটে কিনা তা পরীক্ষা করে
নেই() একটি স্ট্রিং এর কোথাও একটি সাবস্ট্রিং ঘটে কিনা তা পরীক্ষা করে
ধারণ করে শুধুমাত্র() একটি সাবস্ট্রিং একটি স্ট্রিং এ আছে কিনা তা পরীক্ষা করে
সাবস্ট্রিং() একটি সাবস্ট্রিং পাচ্ছেন
বিভক্ত() একটি স্ট্রিংকে সাবস্ট্রিংয়ে বিভক্ত করা
যোগ দিন() সংযুক্ত সাবস্ট্রিং
অপসারণ() একটি সাবস্ট্রিং অপসারণ করা হচ্ছে
প্রতিস্থাপন() সাবস্ট্রিং প্রতিস্থাপন করুন
গণনা ম্যাচ() ম্যাচের সংখ্যা গুনছে

StringUtils.isEmpty() এবং StringUtils.isBlank()

একটি স্ট্রিং কোন টেক্সট আছে কিনা তা পরীক্ষা করতে উভয় পদ্ধতি ব্যবহার করা হয়। স্ট্রিং সত্যিই খালি হলে তারা সত্য ফিরে আসে। অতিরিক্তভাবে, isBlank() স্ট্রিংটিতে শুধুমাত্র স্পেস থাকলে সত্যও ফিরে আসবে ।

তাদের নিজস্ব বিপরীত পদ্ধতি রয়েছে: isNotEmpty() এবং isNotBlank()

আসুন দেখি কিভাবে আপনি isEmpty() এর java.lang.String.isEmpty() প্রতিরূপ , সেইসাথে isBlank () ব্যবহার করতে পারেন :

String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t   \n";

if(StringUtils.isEmpty(emptyValue)) {
   System.out.println("emptyValue is emptyValue");
}

if(StringUtils.isBlank(blankValue)) {
   System.out.println("blankValue is blankValue");
}

if(!nullValue.isEmpty()) {
   System.out.println("nullString isn't null");
}

এখানে String ধরনের তিনটি ভেরিয়েবল আছে । একটি null- এর দিকে নির্দেশ করে , দ্বিতীয়টি নাল নয় কিন্তু কোনো বিষয়বস্তু নেই (একটি খালি স্ট্রিং), এবং তৃতীয়টি খালি নয় কিন্তু একটি খালি ফলাফল প্রিন্ট করবে।

এই কোড চালানোর ফলে:

emptyValue is emptyValue
blankValue is blankValue
Exception in thread "main" java.lang.NullPointerException

java.lang.String- এ নির্মিত isEmpty() পদ্ধতিটি শূন্য নিরাপদ নয় । আপনি সহজেই একটি NullPointerException পাবেন যদি আপনি এটি খালি কিনা তা পরীক্ষা করার চেষ্টা করেন, কারণ আপনি একটি null রেফারেন্সে পদ্ধতিটিকে কল করেন । রেফারেন্সটি শূন্য কিনা তা আগে থেকেই পরীক্ষা করা প্রয়োজন:

String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t   \n";

if(StringUtils.isEmpty(emptyValue)) {
   System.out.println("emptyValue is emptyValue");
}

if(StringUtils.isBlank(blankValue)) {
   System.out.println("blankValue is blankValue");
}

if(nullValue != null && !nullValue.isEmpty()) {
   System.out.println("nullString isn't null");
}

এখন এর ফলাফল হল:

emptyValue is emptyValue
blankValue is blankValue

এবং যদি আমরা এই পদ্ধতিগুলি পরীক্ষা করিnullString:

String nullValue = null;

if(StringUtils.isEmpty(nullValue)) {
   System.out.println("nullValue is emptyValue");
}

if(StringUtils.isBlank(nullValue)) {
   System.out.println("nullValue is blankValue");
}

তারপর আমরা পাই:

nullValue is emptyValue
nullValue is blankValue

StringUtils পদ্ধতিগুলি নাল নিরাপদ এবং প্রত্যাশিত ফলাফল দেয় এমনকি যদি সেগুলি null পাস করা হয় ।

StringUtils.equals()

এই পদ্ধতিটি দুটি স্ট্রিং তুলনা করে এবং যদি তারা অভিন্ন হয় বা উভয় রেফারেন্স null- এর দিকে নির্দেশ করে তবে সত্য দেখায় , তবে সচেতন থাকুন যে এই পদ্ধতিটি কেস সংবেদনশীল।

আসুন দেখি কিভাবে এটি কাজ করে:

System.out.println(StringUtils.equals(null, null));
System.out.println(StringUtils.equals(null, "some information"));
System.out.println(StringUtils.equals("some information", null));
System.out.println(StringUtils.equals("some information",  "some information"));
System.out.println(StringUtils.equals("some additional information", "some information"));

ফলাফল:

true
false
false
true
false

java.lang.String.equals() এর সাথে StringUtils থেকে equals() পদ্ধতির তুলনা করতে :

String nullValue = null;

System.out.println(StringUtils.equals(nullValue, null));
System.out.println(StringUtils.equals(nullValue, "some information"));

System.out.println(nullValue.equals(null));
System.out.println(nullValue.equals("some information"));

এটি আপনাকে এখানে ফিরিয়ে আনে:

true
false
Exception in thread "main" java.lang.NullPointerException

আবার, একটি নাল রেফারেন্সে একটি পদ্ধতি কল করার ফলে একটি NullPointerException হয়, এবং আপনাকে এটি ব্যবহার করার আগে রেফারেন্স ভেরিয়েবলটি নাল কিনা তা পরীক্ষা করতে হবে।

StringUtils.compare()

এই পদ্ধতির ঘোষণা এই মত দেখায়:

public static int compare(final String str1, final String str2)

এই পদ্ধতিটি দুটি স্ট্রিংকে অভিধানিকভাবে তুলনা করে, যেমন java.lang.String.compareTo() পদ্ধতিটি করে , ফিরে আসে:

  • 0 যদি str1 str2 এর সমান হয় (বা উভয়ই শূন্য)
  • str1 str2-এর থেকে কম হলে মান 0-এর কম
  • str1 str2-এর থেকে বড় হলে মান ০-এর বেশি

অভিধানের ক্রম হল অভিধানের ক্রম। আসুন দেখি কিভাবে আমরা আমাদের প্রোগ্রামে এটি ব্যবহার করতে পারি:

System.out.println(StringUtils.compare(null, null));
System.out.println(StringUtils.compare(null , "codeGym"));
System.out.println(StringUtils.compare("codeGym", null));
System.out.println(StringUtils.compare("codeGym", "CODEGYM"));
System.out.println(StringUtils.compare("codeGym", "codeGym"));

আমরা পেতে:

0
-1
1
32
0

দ্রষ্টব্য: একটি নাল মান একটি নন- নাল মানের চেয়ে কম বলে বিবেচিত হয় । দুটি শূন্য মান সমান বলে বিবেচিত হয়।

একটি স্ট্রিং অন্য সাবস্ট্রিং আছে কিনা পরীক্ষা করা হচ্ছে

এটি করার জন্য, StringUtils এর 5 টি পদ্ধতি রয়েছে:

  • রয়েছে()
  • IgnoreCase() রয়েছে
  • যেকোন() রয়েছে
  • নেই()
  • ধারণ করে শুধুমাত্র()

contains() পদ্ধতিটি সত্য বা মিথ্যা রিটার্ন করে সার্চ সিকোয়েন্সটি অন্য সিকোয়েন্সে আছে কি না তার উপর নির্ভর করে।

যদি null এই ধরনের পদ্ধতিতে পাস করা হয়, তাহলে এটি মিথ্যা ফিরে আসবে । নন- নাল পাস করা হলে , পদ্ধতিটি পাস করা অবজেক্টে java.lang.String.indexOf(String str) কল করবে।

উদাহরণ:

String value = "CodeGym is cool";

System.out.println(StringUtils.contains(null, "a"));
System.out.println(StringUtils.contains(value, "CodeGym"));
System.out.println(StringUtils.contains(value, "C++"));
System.out.println(StringUtils.contains(value, "codegym"));

পদ্ধতিটি কেস সংবেদনশীল, তাই শেষ কলটিও মিথ্যা ফেরত দেবে :

false
true
false
false

containsAny() পদ্ধতিটি সত্য হয়ে ওঠে যদি প্রথম আর্গুমেন্ট হিসাবে পাস করা স্ট্রিংটিতে 2-N আর্গুমেন্টে পাস করা সাবস্ট্রিংগুলির মধ্যে অন্তত একটি থাকে।

উদাহরণ:

String value = "CodeGym is cool";
System.out.println(StringUtils.containsAny(value, "cool", "c00l", "bro", "hello"));

প্রদর্শন করবে:

true

এই পদ্ধতিটি কেস সংবেদনশীলও।

কোনটি() পদ্ধতি নেই

যখন আপনাকে একটি নির্দিষ্ট স্ট্রিং তালিকা থেকে কিছু ধারণ করে না তা পরীক্ষা করতে হবে, আপনি containsNone() পদ্ধতিটি ব্যবহার করতে পারেন । প্রথম প্যারামিটারটি একটি স্ট্রিং, এবং নিম্নলিখিত পরামিতিগুলি হল স্ট্রিং যা লক্ষ্য সিঙ্কে থাকা উচিত নয়৷

উদাহরণ:

String s = "CodeGym is cool";
System.out.println(StringUtils.containsNone(s, 'g', 'a'));

কনসোল আউটপুট:

false

সাবস্ট্রিং নিয়ে কাজ করা

সাবস্ট্রিংগুলির সাথে কাজ করা স্ট্রিং ক্লাসের পদ্ধতিগুলির সাথে কাজ করার অনুরূপ :

substring(String str, int start)
substring (String str, int start, int end)

এই পদ্ধতিগুলি স্ট্রিং str থেকে একটি সাবস্ট্রিং প্রদান করে । স্ট্রিং দুটি সূচক দ্বারা দেওয়া হয়: শুরু এবং শেষ । এবং যথারীতি জাভাতে, রেঞ্জের শেষ অক্ষরটি হল end-1 । এই পদ্ধতির সুবিধা কি?

আপনি যদি এই ধরনের একটি পদ্ধতিতে null পাস করেন, তাহলে এটি একটি ব্যতিক্রম নিক্ষেপ করার পরিবর্তে null ফেরত দেবে । এই পদ্ধতিগুলি নেতিবাচক সূচক মান সমর্থন করে। এই ক্ষেত্রে, স্ট্রিংটিকে একটি বন্ধ লুপ হিসাবে বিবেচনা করা হয়। শেষ অক্ষর প্রথম দ্বারা অনুসরণ করা হয়, এবং তাই।

আসুন দেখি কিভাবে আমরা এটি ব্যবহার করতে পারি:

System.out.println(StringUtils.substring("lets java", 2, 6));
System.out.println(StringUtils.substring("lets java", -8));
System.out.println(StringUtils.substring(null, 3));

উপরের কোডটি চালানো আমাদের দেয়:

ts j
ets java
null

StringUtils.split()

একটি পদ্ধতি যা আপনাকে একটি বিশেষ ডিলিমিটার অক্ষর ব্যবহার করে একটি স্ট্রিংকে সাবস্ট্রিংয়ে বিভক্ত করতে দেয়। যদি টার্গেট স্ট্রিং-এ একটি থাকে, তাহলে পদ্ধতিটি সাবস্ট্রিংগুলির একটি অ্যারে ফিরিয়ে দেবে। কোন অক্ষর না থাকলে, একটি খালি অ্যারে ফেরত দেওয়া হবে। ভাল, null পদ্ধতিতে পাস করা হলে, এটি null ফেরত দেবে । আসুন এই কোডটি দেখুন এবং পদ্ধতিটি কীভাবে কাজ করে:

String myData = "Address, City, State, Zip, Phone, Email, Password";

System.out.println(Arrays.toString(StringUtils.split(myData, ',')));
System.out.println(Arrays.toString(StringUtils.split(null, '.')));
System.out.println(Arrays.toString(StringUtils.split("", '.')));

ফলাফল:

[Address,  City,  State,  Zip,  Phone,  Email,  Password]
null
[]

StringUtils.join()

join() পদ্ধতি আপনাকে স্ট্রিংগুলির একটি অ্যারেকে একটি একক স্ট্রিংয়ে সংযুক্ত করতে দেয়। একই সময়ে, এটিতে একটি বিশেষ বিভাজক অক্ষর প্রেরণ করা যেতে পারে, যা ফলস্বরূপ স্ট্রিংয়ের সাবস্ট্রিংগুলির মধ্যে যোগ করা হবে। এবং যদি null পদ্ধতিতে পাস করা হয়, তাহলে এটি null ফিরে আসবে ।

এই পদ্ধতিটি split() পদ্ধতির ঠিক বিপরীত । আসুন এই সহজ উদাহরণটি দেখি:

String myData = "Address, City, State, Zip, Phone, Email, Password";

String[] myString =  StringUtils.split(myData, ',');
System.out.println(StringUtils.join(myString, '-'));

উপরের কোডটি চালানো আমাদের দেয়:

Address- City- State- Zip- Phone- Email- Password

StringUtils.replace()

একটি স্ট্রিংয়ের মধ্যে একটি স্ট্রিং অনুসন্ধান করে, এটি বিদ্যমান থাকলে এটি খুঁজে বের করে এবং একটি নতুন স্ট্রিং দিয়ে এটির সমস্ত ঘটনা প্রতিস্থাপন করে।

এই পদ্ধতির ঘোষণা এই মত দেখায়:

public static String replace(final String text, final String searchString, final String replacement)

যদি টেক্সটে সার্চ স্ট্রিং না পাওয়া যায়, তাহলে কিছুই হবে না এবং টেক্সট একই থাকবে। একই যুক্তি অনুসরণ করে, যদি টেক্সটটি নাল হয় , এই পদ্ধতিটি null প্রদান করে । আপনি যদি একটি নাল স্ট্রিং খুঁজছেন বা null দিয়ে একটি সাবস্ট্রিং প্রতিস্থাপন করছেন , তাহলে পদ্ধতিটি আসল স্ট্রিংটি ফিরিয়ে দেবে।

আসুন এই পদ্ধতিটি চেষ্টা করি:

String value = "CodeGym is the best";
System.out.println(StringUtils.replace(value, "best", "cool"));

ফলাফল:

CodeGym is the cool