আমি জাভাতে নুলের বিরুদ্ধে একটি স্ট্রিং কীভাবে পরীক্ষা করতে পারি? আমি ব্যাবহার করছি
stringname.equalsignorecase(null)
কিন্তু এটি কাজ করে না
আমি জাভাতে নুলের বিরুদ্ধে একটি স্ট্রিং কীভাবে পরীক্ষা করতে পারি? আমি ব্যাবহার করছি
stringname.equalsignorecase(null)
কিন্তু এটি কাজ করে না
উত্তর:
string == null
বস্তুটি নাল হলে তুলনা করুন। string.equals("foo")
object বস্তুর অভ্যন্তরের মানটির তুলনা করে। string == "foo"
সর্বদা কাজ করে না, কারণ আপনি দেখার চেষ্টা করছেন যে বস্তুগুলি একই, না তাদের মান উপস্থাপন করে।
দীর্ঘ উত্তর:
আপনি যদি এটি চেষ্টা করেন তবে এটি কার্যকর হবে না, যেমনটি আপনি পেয়েছেন:
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
কারণটি হ'ল foo নাল, তাই এটি জানে না qu .aquals থেকে কল করার জন্য সেখানে কোনও আপত্তি নেই।
আপনি সম্ভবত যা চেয়েছিলেন তা হ'ল:
String foo = null;
if (foo == null) {
// That will work.
}
স্ট্রিংসের সাথে কাজ করার সময় নিজেকে নাল থেকে রক্ষা করার সাধারণ উপায় হ'ল:
String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
// Do something here.
}
এইভাবে, যদি foo শূন্য হয়, এটি শর্তাধীন দ্বিতীয়ার্ধের মূল্যায়ন করে না এবং জিনিসগুলি ঠিক আছে।
সহজ উপায়, যদি আপনি স্ট্রিং আক্ষরিক (কোনও পরিবর্তকের পরিবর্তে) ব্যবহার করেন তবে তা হ'ল:
String foo = null;
...
if ("some String".equals(foo)) {
// Do something here.
}
আপনি যদি এটিকে ঘিরে কাজ করতে চান তবে অ্যাপাচি কমন্সের একটি ক্লাস রয়েছে - স্ট্রিং ইউটিলস - যা নাল-সেফ স্ট্রিং ক্রিয়াকলাপ সরবরাহ করে।
if (StringUtils.equals(foo, bar)) {
// Do something here.
}
আর একটি প্রতিক্রিয়া রসিকতা করছিল, এবং বলেছিল যে আপনার এটি করা উচিত:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
দয়া করে এটি করবেন না। ব্যতিক্রমী ত্রুটিগুলির জন্য আপনাকে কেবল ব্যতিক্রম ছুঁড়ে ফেলা উচিত; যদি আপনি শূন্যতার প্রত্যাশা করে থাকেন তবে আপনার আগে সময়ের জন্য এটি পরীক্ষা করা উচিত, এবং এটি ব্যতিক্রম ছোঁড়াতে দেওয়া উচিত নয়।
আমার মাথায়, এটির জন্য দুটি কারণ রয়েছে। প্রথমত, ব্যতিক্রমগুলি ধীর; শূন্যের বিরুদ্ধে পরীক্ষা করা দ্রুত, তবে জেভিএম যখন ব্যতিক্রম ছুঁড়ে ফেলে, তখন অনেক সময় লাগে। দ্বিতীয়ত, কোডটি পড়া এবং বজায় রাখা আরও সহজ যদি আপনি সময়ের আগে নাল পয়েন্টারটি পরীক্ষা করে থাকেন তবে।
s == null
কাজ করবে না?
equals()
যদি মানগুলি তুলনা করতে চান তবে আপনাকে "কেবল" ব্যবহার করতে হবে । তবে আপনি যদি ভেরিয়েবল কিনা তা পরীক্ষা করতে চান তবে null
আপনি ব্যবহার করুন ==
।
অবশ্যই এটি কাজ করে। আপনি কোডের একটি অতীব গুরুত্বপূর্ণ অংশ মিস করছেন আপনার ঠিক এটি করা দরকার:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
;)
আপনি যদি অ্যান্ড্রয়েডে কাজ করছেন তবে টেক্সটইটিস পদ্ধতিটি ব্যবহার করুন।
TextUtils.isEmpty (str) : স্ট্রিংটি নাল বা 0-দৈর্ঘ্যের হলে সত্যটি ফেরত দেয়। পরামিতি: স্ট্রিং পরীক্ষা করা হবে রিটার্ন: সত্য যদি str নাল হয় বা শূন্য দৈর্ঘ্য
if(TextUtils.isEmpty(str)) {
// str is null or lenght is 0
}
নীচে এই পদ্ধতির সোর্স কোড রয়েছে You আপনি ডাইরেক্টলিটি ব্যবহার করতে পারেন।
/**
* Returns true if the string is null or 0-length.
* @param str the string to be examined
* @return true if str is null or zero length
*/
public static boolean isEmpty(CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
যদি আমরা সমতুল্য আইজেনের কেস পদ্ধতির বাস্তবায়নটি দেখি তবে আমরা এই অংশটি পাই:
if (string == null || count != string.count) {
return false;
}
সুতরাং false
যুক্তি থাকলে এটি সর্বদা ফিরে আসবে null
। এবং এটি স্পষ্টতই সঠিক, কারণ এটিই কেবল ফিরে আসতে true
হবে যখন সমান ইগনোরকেসকে একটিতে অনুরোধ করা হয়েছিল null String
, তবে
String nullString = null;
nullString.equalsIgnoreCase(null);
অবশ্যই একটি নালপয়েন্টার এক্সসেপশন ফলাফল করবে।
সুতরাং সমান পদ্ধতিগুলি কোনও বস্তু নাল কিনা তা পরীক্ষা করার জন্য ডিজাইন করা হয়নি, কেবল কারণ আপনি সেগুলি চালিত করতে পারেন না null
।
এটি কিছুটা অদ্ভুত লাগছে, তবে ...
stringName == null || "".equals(stringName)
এইভাবে এটি করার ক্ষেত্রে কখনও কোনও সমস্যা হয়নি, ততক্ষণ সম্ভাব্য নাল পয়েন্টগুলি ব্যতিক্রম করার সময় এটি পরীক্ষা করা নিরাপদ।
আমি নিশ্চিত না যে এমওয়াইওয়াইনের উত্তরটি দিয়ে কী ভুল হয়েছিল।
if (yourString != null) {
//do fun stuff with yourString here
}
উপরের নাল চেকটি বেশ ঠিক আছে।
যদি আপনি যাচাই করার চেষ্টা করছেন যে কোনও স্ট্রিং রেফারেন্স অন্য স্ট্রিংয়ের সাথে সমান (কেস উপেক্ষা করে) করা হয়েছে যা আপনি জানেন যে নাল রেফারেন্স নয়, তবে এই জাতীয় কিছু করুন:
String x = "this is not a null reference"
if (x.equalsIgnoreCase(yourStringReferenceThatMightBeNull) ) {
//do fun stuff
}
আপনি যে দুটি স্ট্রিংয়ের সাথে তুলনা করছেন তার নাল রেফারেন্স রয়েছে কিনা তা নিয়ে যদি সন্দেহ থাকে তবে নালপয়েন্টার এক্সসেপশন হওয়ার সম্ভাবনা এড়াতে আপনাকে কমপক্ষে একটিতে নাল রেফারেন্সের জন্য পরীক্ষা করতে হবে।
যদি আপনার স্ট্রিংয়ের "নাল" মান থাকে তবে আপনি ব্যবহার করতে পারেন
if(null == stringName){
[code]
}
else
[Error Msg]
এটি আপনার ক্লাসে আমদানি করুন
import org.apache.commons.lang.StringUtils;
তারপরে এটি ব্যবহার করুন, তারা উভয়ই সত্য ফিরে আসবে
System.out.println(StringUtils.isEmpty(""));
System.out.println(StringUtils.isEmpty(null));
অবশ্যই ব্যবহারকারী 351809, stringname.equalsignorecase(null)
নালপয়েন্টার এক্সসেপশন নিক্ষেপ করবে।
দেখুন, আপনার কাছে একটি স্ট্রিং অবজেক্ট রয়েছে stringname
যা 2 টি সম্ভাব্য শর্ত অনুসরণ করে:
stringname
কিছু নন-নাল স্ট্রিং মান রয়েছে ("কম্পিউটার" বলুন): "computer".equalsignorecase(null)
false
।stringname
একটি null
মান আছে: null.equalsignorecase(null)
true
, null
কার্যকর করতে পারে এমন কোনও বস্তু নয় equalsignorecase()
।সুতরাং, আপনি কেস 2 এর কারণে ব্যতিক্রম পেয়েছেন
I আমি আপনাকে যা পরামর্শ দিচ্ছি তা হ'ল সহজভাবে ব্যবহার করাstringname == null
সাধারণ পদ্ধতি:
public static boolean isBlank(String value) {
return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
যদি value
প্রত্যাবর্তন শূন্য হয়, ব্যবহার করুন:
if(value.isEmpty());
কিছু সময় নাল পরীক্ষা করার জন্য, if(value == null)
জাভাতে, এটি স্ট্রিং নাল হলেও সত্যটি দিতে পারে না।
if(value.isEmpty())
দেয় NullPointerException
। এই ক্ষেত্রে আরও ভাল ব্যবহার করা হচ্ছেif(value == null)
জাভা 7 এর সাথে আপনি ব্যবহার করতে পারেন
if (Objects.equals(foo, null)) {
...
}
true
উভয় পরামিতি থাকলে যা ফিরে আসবে null
।
আমি বুঝতে পেরেছিলাম যে এর জবাব অনেক দিন আগে দেওয়া হয়েছিল, কিন্তু আমি এই পোস্টটি দেখিনি, তাই আমি ভেবেছিলাম আমি কী করব তা ভাগ করে নিই। কোড পাঠযোগ্যতার জন্য এটি বিশেষভাবে ভাল নয় তবে আপনি যদি নাল চেকের একটি সিরিজ করতে থাকেন তবে আমি এটি ব্যবহার করতে চাই:
String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();
এই উদাহরণে, স্ট্রিমের উপরে ট্রিমকে ডাকা হয়, যা স্ট্রিংটি শূন্য বা ফাঁকা থাকলে একটি এনপিই নিক্ষেপ করবে তবে একই লাইনে আপনি নাল বা ফাঁকাটি পরীক্ষা করতে পারেন যাতে আপনি এক টন শেষ না করে (আরও কিছু) ) ব্লক করে ফর্ম্যাট করা কঠিন।
ঠিক আছে, শেষবারের মতো কেউ এই নির্বোধ প্রশ্ন জিজ্ঞাসা করেছিল, উত্তরটি ছিল:
someString.equals("null")
যদিও এই "ফিক্স" প্রথম স্থানে কীভাবে null
হয় তার বড় সমস্যাটি কেবল আড়াল করে "null"
।
এটি করার দুটি উপায় আছে .. স্ট্রিং বলুন == নাল বা স্ট্রিং.কুইয়েলস () ..
public class IfElse {
public int ifElseTesting(String a){
//return null;
return (a== null)? 0: a.length();
}
}
public class ShortCutifElseTesting {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("enter the string please:");
String a=scanner.nextLine();
/*
if (a.equals(null)){
System.out.println("you are not correct");
}
else if(a.equals("bangladesh")){
System.out.println("you are right");
}
else
System.out.println("succesful tested");
*/
IfElse ie=new IfElse();
int result=ie.ifElseTesting(a);
System.out.println(result);
}
}
এই উদাহরণটি দেখুন .. এখানে শর্টকাট সংস্করণের অন্য একটি উদাহরণ যদি অন্য ..