আমি কীভাবে জাভাস্ক্রিপ্টে একটি খালি / অপরিজ্ঞাত / নাল স্ট্রিং পরীক্ষা করতে পারি?


2847

আমি এই প্রশ্নটি দেখেছি , তবে আমি কোনও জাভাস্ক্রিপ্টের সুনির্দিষ্ট উদাহরণ দেখতে পাইনি। string.Emptyজাভাস্ক্রিপ্টে কি কোনও সহজলভ্য আছে, বা এটি কেবল যাচাইয়ের ক্ষেত্রে ""?


2
শুধু এফওয়াইআই, আমি মনে করি স্ট্রিং ক্লাসের জন্য সর্বাধিক দরকারী এপিআইগুলি মজিলা এবং জাভাস্ক্রিপ্ট কিটে রয়েছে । [ইলেটেড.কম] ( ইলেটেডডার্টলেটস / ওয়ার্কিং-উইথ-স্ট্রিংস ) এর স্ট্রিংয়ের সমস্ত বৈশিষ্ট্য, পদ্ধতিগুলি সম্পর্কে একটি টিউটোরিয়াল রয়েছে ... দয়া করে নোট করুন: মোজিলা লিঙ্কটি ডেভেলপারকে
জিন টি


প্রয়োজনীয়তা স্পষ্টভাবে নির্দিষ্ট করা থাকলে এটি ব্যাপকভাবে সহায়তা করবে। কি মানগুলির জন্য ইম্পেটি সত্য হওয়া উচিত ? "" ইনফারারের জন্য অনুসন্ধান করা হচ্ছে যে মানটি স্ট্রিং এবং দৈর্ঘ্য 0 টাইপ করলেই এটি সত্য হয়।
রবজি

উত্তর:


3563

যদি আপনি কেবল কোনও মান আছে কিনা তা পরীক্ষা করতে চান তবে আপনি এটি করতে পারেন

if (strValue) {
    //do something
}

যদি আপনাকে শূন্যের উপরে খালি স্ট্রিংয়ের জন্য বিশেষভাবে যাচাই করা দরকার হয় তবে আমি মনে করব যে অপারেটরটি"" ব্যবহার করে=== (যার ফলে আপনি জানেন যে এটি একটি স্ট্রিং যার সাথে আপনি তুলনা করছেন) এটি পরীক্ষা করা আপনার সেরা বাজি is

if (strValue === "") {
    //...
}

172
দৈর্ঘ্যের সম্পত্তিটি পরীক্ষা করা প্রকৃতপক্ষে "" এর বিপরীতে স্ট্রিংটি পরীক্ষা করার চেয়ে দ্রুত হতে পারে, কারণ অনুবাদককে স্ট্রিং আক্ষরিক থেকে স্ট্রিং অবজেক্ট তৈরি করতে হবে না।
ভিনসেন্ট রবার্ট

24
@ ভিনসেন্ট ক্রোম বিকাশকারী সরঞ্জামগুলিতে কিছু নির্লজ্জভাবে প্রোফাইলিং করছে, পরীক্ষার === ''বনাম .lengthকোনও বোধগম্য উন্নতি দেখায়নি (এবং .lengthকেবলমাত্র যদি আপনি স্ট্রিং
ধরেই

26
@ বিডুকস যখন আপনি এই ধরণের মাইক্রো-অপ্টিমাইজেশনের বিষয়ে যত্ন নেওয়া শুরু করেন, তখন আমার মনে হয় না যে ক্রোম এমন একটি ব্রাউজার যেখানে আপনার বেশিরভাগ কার্য সম্পাদনের সমস্যা রয়েছে ...
ভিনসেন্ট রবার্ট

15
কেবলমাত্র লক্ষণীয়, যদি আপনার "খালি স্ট্রিং" সংজ্ঞায় সাদা স্থান অন্তর্ভুক্ত থাকে তবে এই সমাধানটি উপযুক্ত নয়। 1 বা ততোধিক স্পেসের একটি স্ট্রিং উপরে উঠে আসে। আপনি jQuery ব্যবহার করে থাকেন আপনি কেবল এই ব্যবহার করতে পারেন যদি ($ .trim (সুত্র) .length === 0) - যেমন এই উত্তর প্রতি একটি অনুরূপ প্রশ্নের: stackoverflow.com/questions/2031085/...
CodeClimber

115
যেমনটি প্রত্যাশা .length > 0করা আসলে স্ট্রিং আক্ষরিকের সাথে তুলনা করার চেয়ে অনেক দ্রুত ! এই jscreen দেখুন
চাদ

1127

কোনও স্ট্রিং ফাঁকা আছে কিনা তা যাচাই করার জন্য, নাল বা অপরিজ্ঞাত আমি ব্যবহার করি:

function isEmpty(str) {
    return (!str || 0 === str.length);
}

কোনও স্ট্রিং ফাঁকা, নাল বা অপরিজ্ঞাত আমি ব্যবহার করছি কিনা তা যাচাইয়ের জন্য:

function isBlank(str) {
    return (!str || /^\s*$/.test(str));
}

কোনও স্ট্রিং ফাঁকা আছে কিনা তা যাচাই করার জন্য বা কেবল শ্বেত-স্থান রয়েছে:

String.prototype.isEmpty = function() {
    return (this.length === 0 || !this.trim());
};

21
কেন 0 === স্ট্রিংলেন্থ এর পরিবর্তে দৈর্ঘ্য === 0?
ভিনসেন্ট

66
@ ভিনসেন্ট শর্তগুলি প্রায়শই এই জাতীয়ভাবে লেখা হয় if (variable == constant value)এবং আপনি যদি একটি '=' ভুলে যান তবে আপনি পরীক্ষার পরিবর্তে চলকটির ধ্রুবক মান নির্ধারণ করছেন। কোডটি এখনও কাজ করবে যেহেতু আপনি যদি কোনও ক্ষেত্রে পরিবর্তনশীল নির্ধারণ করতে পারেন। সুতরাং এই শর্তটি লেখার একটি নিরাপদ উপায় হ'ল ধ্রুবক মান এবং পরিবর্তনশীলকে বিপরীত করা। এইভাবে আপনি যখন আপনার কোডটি পরীক্ষা করেন আপনি একটি ত্রুটি দেখতে পাবেন (অ্যাসাইনমেন্টে অবৈধ বাম হাত)। শর্তে অ্যাসাইনমেন্টটি অস্বীকার করার জন্য আপনি জেএসহিন্টের মতো কিছু ব্যবহার করতে পারেন এবং আপনি যখন এটি লিখবেন তখন সতর্কতা অবলম্বন করতে পারেন।
ফ্লোরিয়ান

2
লজ্জা যা /^\s*$/.test(str)সত্যিই পঠনযোগ্য নয় - সম্ভবত সহজ কোড বা রেজেক্স ব্যবহার করে স্পেসগুলি অপসারণ করা আরও ভাল হবে? স্ট্যাকওভারফ্লো / প্রশ্নগুলি /6623231/… এবং স্ট্যাকওভারফ্লোও দেখুন / প্রশ্নগুলি 10800355/…
অ্যাড্রিয়েন

6
/^\s*$/.est(str) str.trim () দৈর্ঘ্য === 0
স্ক্যাডেনফ্রেড

21
@ ভিনসেন্টকে এটিকে "ইয়োডা কন্ডিশন", বলা হয় if blue is the sky। দেখুন dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.html
জেড।

316

পূর্ববর্তী সমস্ত উত্তরগুলি ভাল তবে এটি আরও ভাল হবে। !!( নয় ) অপারেটরটি ব্যবহার করুন ।

if(!!str){
    // Some code here
}

বা প্রকারের ingালাই ব্যবহার করুন:

if(Boolean(str)){
    // Code here
}

উভয়ই একই ফাংশন করে। ভেরিয়েবলটি বুলিয়ানতে টাইপকাস্ট করুন, যেখানে strএকটি পরিবর্তনশীল।
এটির falseজন্য ফিরে আসে null,undefined,0,000,"",false
এটি trueস্ট্রিং "0" এবং সাদা স্থান "" এর জন্য ফিরে আসে ।


61
কেন এই "আরও ভাল"?
মেনি

33
সেখানে আচরণ মধ্যে কোনো পার্থক্য আছে কি if(str)এবং if(!!str)?
পিটার ওলসন

6
@ পিটারলসন আপনি যদি বুলিয়ান হিসাবে কোনও পরিবর্তনশীল সংরক্ষণের চেষ্টা করছেন যা সামগ্রীর জন্য একাধিক স্ট্রিং পরীক্ষা করে থাকে তবে আপনি এটি করতে চাইবেন .. var any = (!!str1 && !!str2 && !!str3)সেখানে যদি সেখানেও একটি সংখ্যা থাকে তবে ওরফে হ্যান্ডলিং
জন রুডেল

23
এই সমাধানটি আমি সর্বদা ব্যবহার করি। !!str.trim()স্ট্রিংটি কেবল সাদা জায়গাগুলির তৈরি নয় তা নিশ্চিত করার জন্য।
ডারিও ওডেনিনো

5
হ্যাকের মতো দেখাচ্ছে না, Boolean(str)এটি অনেক বেশি পঠনযোগ্য এবং "wtfish" কম।
shinzou

105

আপনি যে নিকটতম জিনিসটি পেতে পারেন str.Empty(সেই শর্তটি যে স্ট্রিং একটি স্ট্রিং সহ) হ'ল:

if (!str.length) { ...

8
যে ব্যতিক্রম নিক্ষেপ করা হবে না নাল?
পিক মিকেল

3
@ পিকমিকেল হ্যাঁ! তাই হবে str.Empty
এটস গোলাল

99

আপনার যদি নিশ্চিত করতে হয় যে স্ট্রিংটি কেবল খালি জায়গাগুলির একগুচ্ছ নয় (আমি এটি ফর্ম বৈধতার জন্য ধরে নিচ্ছি) আপনাকে ফাঁকা স্থানগুলিতে একটি প্রতিস্থাপন করতে হবে।

if(str.replace(/\s/g,"") == ""){
}

8
তবে কাজটি কি যদি আপনি আসলে যা পরীক্ষা করতে চান তা হ'ল ফাঁকা স্থানের সামগ্রী সহ string এটি পরীক্ষা করার জন্য কি কোনও কম ব্যয়বহুল উপায় আছে?
ফ্ল্যাশ

4
দৈর্ঘ্যের সম্পত্তি সম্পর্কে কীভাবে?
ড্রাইভ

27
সমস্ত স্থান সরিয়ে দেওয়ার পরিবর্তে, কেন কেবল খালি স্থান নেই কিনা তা পরীক্ষা করে দেখুন? 2 টি সুবিধা রয়েছে যে স্থান ছাড়াই অক্ষর থাকলে তা তাড়াতাড়ি জামিন দিতে পারে এবং এরপরে কোনও নতুন স্ট্রিং ফিরে আসেনি যা আপনি তারপরে পরীক্ষা করে দেখুন। if(str.match(/\S/g)){}
এমপেন

34
@ মার্ক এফওয়াইআই, আপনার গ্লোবাল মডিফায়ারের দরকার পড়েনি, যেহেতু কোনও অ-স্থানের অক্ষরের প্রথম উপস্থিতির ম্যাচের অর্থ স্ট্রিংটি খালি নয়:str.match(/\S/)
নীজার ২

1
কেন এটা ব্যয়বহুল? যদি সত্যিই হয়, তবে jQuery কেন এই পদ্ধতিটি ব্যবহার করে? আপনি এটি jQuery এর উত্সvar trimLeft = /^\s+/, trimRight = /\s+$/;
মেরেকি

66

আমি ব্যবহার করি:

function empty(e) {
  switch (e) {
    case "":
    case 0:
    case "0":
    case null:
    case false:
    case typeof(e) == "undefined":
      return true;
    default:
      return false;
  }
}

empty(null) // true
empty(0) // true
empty(7) // false
empty("") // true
empty((function() {
    return ""
})) // false

5
এই দ্রষ্টব্যটি ভাষা অজ্ঞেয় সম্পর্কিত। এটি কেবলমাত্র জাভাস্ক্রিপ্ট বৈশিষ্ট্যের উপর নির্ভর করে টাইপফুল। সুতরাং যখন আপনি বিভিন্ন ব্রাউজারে প্রয়োগগুলি বিশ্বাস করেন না এবং আরও ভাল সমাধান গ্রহণ করার সময় পান না তখন আপনি যে সমাধানটি ব্যবহার করতে পারেন এটি একটি উত্তম উদাহরণ। (IE, কোনও ইন্টারনেট অ্যাক্সেস নেই)। এটি প্রমাণের মতো কিছু something সবচেয়ে পরিষ্কার নয় তবে আপনি নিশ্চিত হতে পারেন এটি জাভাস্ক্রিপ্ট সম্পর্কে খুব বেশি না জেনে কাজ করবে।
জেফ ডেভিস

2
আমি আরও কিছুটা এগিয়ে যেতে পেরেছি এবং অপরিজ্ঞাত মামলার জন্য এটি একটি === অপারেটর দিয়ে পেরেক দিয়েছি। অন্যথায় এটি কেবল সহজ উত্তর।
xarlymg89

typeofমধ্যে switchআমার জন্য কাজ করে নি। আমি একটি if (typeof e == "undefined")পরীক্ষা যোগ করেছি এবং এটি কাজ করে। কেন?
লুকাস

1
@ লুকাস কারণ এটি একটি টাইপো বা তদারকি ছিল। আপনার পরিবর্তনটি সঠিক পদ্ধতির। (মূলটি খালি ফাংশনের প্রসঙ্গে বোঝায়, ই প্যারামিটারটি নয়, যা ফাংশনটি যাচাই করার কথা ছিল)
বিটি তিন

আমরা এর case undefined:পরিবর্তে ব্যবহার করতে পারি case typeof(e) == "undefined":?
বরিস জে

43

আপনি লড্যাশ ব্যবহার করতে পারেন : _.আইএসপি (মান)।

মনে হচ্ছে একটি ক্ষেত্রে অনেক কভার {}, '', null, undefined, ইত্যাদি

তয় এইটা সবসময়ের জন্য ফেরৎ trueজন্য Numberধরণ জাভাস্ক্রিপ্ট আদিম ধরনের তথ্য মত _.isEmpty(10)বা _.isEmpty(Number.MAX_VALUE)উভয় রিটার্ন true


_.isEmpty(" "); // => false
এরিখ

1
@Erich কারণ " "খালি না থাকে। _.isEmpty("");সত্য ফিরে।
মোশি ২

1
বেশ সত্য - আমি এটি উল্লেখ করেছি কারণ এখানে অন্যান্য কয়েকটি জবাব বৈধতা যাচাই করে এবং একটি স্ট্রিংয়ের মধ্যে কেবল সাদা অংশ থাকে কিনা তা যাচাই করে এবং নিজেই এই একক লডাশ ফাংশনটি সমস্যার সমাধান করবে না।
এরিচ

@ এরিচ, এখন আমি আপনার বক্তব্য পেয়েছি, উল্লেখ করার জন্য ধন্যবাদ।
মোশি

36

ফাংশন:

function is_empty(x)
{
    return (
        (typeof x == 'undefined')
                    ||
        (x == null)
                    ||
        (x == false)  //same as: !x
                    ||
        (x.length == 0)
                    ||
        (x == "")
                    ||
        (x.replace(/\s/g,"") == "")
                    ||
        (!/[^\s]/.test(x))
                    ||
        (/^\s*$/.test(x))
    );
}

PS: জাভাস্ক্রিপ্টে, লাইন ব্রেক পরে ব্যবহার করবেন না return;


1
প্রতিটি চেক কি করছে তা আপনি ব্যাখ্যা করতে পারেন কি? :)
ডানভি

2
-1 তারা বিভিন্ন জিনিস পরীক্ষা করে নিচ্ছেন। এগুলি সমস্তকে একটি ifবিবৃতিতে রাখা কোনও অর্থবোধ করে না ।
বেনেট ম্যাকএলউই 22

1
টাইপফাই মাইভ্যারিয়েবল == 'অপরিজ্ঞাপিত' একটি পরিবর্তনহীন মান এবং একটি অঘোষিত ভেরিয়েবলের সাথে একটি ইনিশিয়াল ভেরিয়েবলের মধ্যে চিহ্নিত করা যায় না যদি না চলকটি প্রাথমিকভাবে ঘোষিত হয় এবং শূন্যে আরম্ভ করা হয়। দৈর্ঘ্যের সম্পত্তিটি চেক করার কারণে স্ট্রিং অবজেক্টে মোড়কে স্ট্রিম আদিম হয়।
স্কট মার্কাস

35

চেষ্টা করুন:

if (str && str.trim().length) {  
    //...
}

2
দৈর্ঘ্যের সম্পত্তি কি প্রয়োজনীয়?
ব্যাগকোডার

str.trim().lengthstr.trim()আমার নিজের পরীক্ষার ফলাফল অনুযায়ী প্রায় 1% এর চেয়ে দ্রুত কাজ করবে ।
ডেভিল্ডেটা

2
@ ডিভিলডেল্টা - আপনার 1% আপনার পরীক্ষায় একটি ত্রুটি।
স্টিফেন এম ইরভিং

ওপি খালি স্ট্রিং, অপরিজ্ঞাত বা নাল পরীক্ষা করার জন্য সন্ধান করছে। এটি এমন স্ট্রিংয়ের জন্য পরীক্ষা করছে যা এই শর্তগুলির কোনও নয়। তিনি কেবল সাদা অংশের স্ট্রিং সম্পর্কে কিছুই বলেননি। আপনি কেবল ও এর শর্তগুলির জন্য এটি পরীক্ষা করতে পারবেন, যতক্ষণ না আপনি নিশ্চিত হন যে ভেরিয়েবলে কোনও অন্য কোনও ডেটা ধরণের সংরক্ষণ করা হয় না: if (!str) { ... }
স্টিফেন এম ইরভিং

34
var s; // undefined
var s = ""; // ""
s.length // 0

জাভাস্ক্রিপ্টে খালি স্ট্রিং উপস্থাপন করার মতো কিছু নেই। উভয়ের বিপরীতে length(যদি আপনি জানেন যে ভেরটি সর্বদা একটি স্ট্রিং থাকবে) বা বিপরীতে একটি চেক করুন""


29

আমি সবচেয়ে দক্ষ পদ্ধতি সম্পর্কে খুব বেশি চিন্তা করব না । আপনার অভিপ্রায়টি সর্বাধিক স্পষ্ট যা ব্যবহার করুন। আমার জন্য সাধারণত strVar == ""

কনস্ট্যান্টিনের মন্তব্য অনুসারে , যদি strVar কিছুতে যদি পূর্ণসংখ্যার 0 মান সমাপ্ত করতে পারে, তবে তা প্রকৃতপক্ষে সেই উদ্দেশ্যগুলির মধ্যে একটি হতে পারে।


11
খারাপ ধারণা। আপনি যদি সত্য হয়ে উঠবেন যে strVarটি ঘটনাক্রমে 0 হিসাবে নির্ধারিত হয়েছে
কনস্টান্টিন

5
আমি সম্মত হলাম যে অন্য পদ্ধতিগুলি যে কোনও মাইক্রো-অপ্টিমাইজেশান অর্জন করতে পারে তার চেয়ে আপনার উদ্দেশ্যটি পরিষ্কার করা আরও গুরুত্বপূর্ণ, তবে কঠোর তুলনা অপারেটরটি ব্যবহার ===করা আরও ভাল। strVarখালি স্ট্রিং হলে এটি সত্য হয় returns
অকেজো কোড

অপরিবর্তিত থাকলে চেক ব্যর্থ হয়। সুতরাং যদি (স্ট্র) আরও ভাল কাজ করে
ভ্যালেন্টিন হেইনিজ

3
@ ভ্যালেন্টিনহিনিটজ যদি স্ট্রকে 0 বা "0" এর একটি ভুয়া মূল্য অর্পণ করা হয়, যদি (টিআর) মিথ্যাভাবে সত্য রিপোর্ট করে। সর্বোত্তম পন্থা হ'ল (str === "")। এটি সহজ এবং এটি কখনও ব্যর্থ হবে না।
স্কট মার্কাস


20

প্রচুর উত্তর, এবং বিভিন্ন সম্ভাবনা!

দ্রুত এবং সহজ বাস্তবায়নের জন্য সন্দেহ ছাড়াই বিজয়ী হ'ল: if (!str.length) {...}

তবে অন্যান্য অনেক উদাহরণ পাওয়া যায়। এটি সম্পর্কে সর্বোত্তম কার্যকরী পদ্ধতি, আমি পরামর্শ দেব:

function empty(str)
{
    if (typeof str == 'undefined' || !str || str.length === 0 || str === "" || !/[^\s]/.test(str) || /^\s*$/.test(str) || str.replace(/\s/g,"") === "")
    {
        return true;
    }
    else
    {
        return false;
    }
}

কিছুটা অতিরিক্ত, আমি জানি।


2
অপরিজ্ঞাত জন্য চেক করার জন্য চেকগুলিতে প্রথমে স্থানান্তরিত হওয়া প্রয়োজন, বা পূর্বনির্ধারিত আইটেমগুলি পূর্ববর্তী চেকগুলিতে ব্যতিক্রম ছুঁড়ে দেবে।
এসভিডিসিনার

সম্পূর্ণ একমত! চমৎকার ধরা. আমি আমার উপরের উত্তর সম্পাদনা করব!
tfont

str.length === 0আনুষ্ঠানিক পরামিতি নেই যে কোনও ফাংশনের জন্য সত্য ফিরে আসে।
রবজি

20

আপনি নিয়মিত প্রকাশের সাথেও যেতে পারেন:

if((/^\s*$/).test(str)) { }

স্ট্রিংগুলির জন্য চেক করুন যা হয় খালি বা সাদা জায়গায় ভরাট।


এটি কাজ করে, তবে এটি অত্যন্ত মারাত্মক ব্যয়বহুল বিকল্পগুলিও। ভাল যদি আপনি কেবল একটি বড় সেট নয়, কেবল একটি বা দুটি জিনিস পরীক্ষা করতে চান।
অরফিয়াস

19
  1. var a;উপস্থিত আছে তা পরীক্ষা করুন
  2. false spacesমানটি ট্রিম করে ফেলুন , তারপরে পরীক্ষা করুনemptiness

    if ((a)&&(a.trim()!=''))
    {
      // if variable a is not empty do this 
    }

18

কর্মক্ষমতা

আমি 18 টি নির্বাচিত সমাধানের জন্য ম্যাকোস ভি 10.13.6 (উচ্চ সিয়েরা) এর উপর পরীক্ষা নিই । সমাধানগুলি কিছুটা পৃথকভাবে কাজ করে (কর্নার-কেস ইনপুট ডেটার জন্য) যা নীচে স্নিপেটে উপস্থাপিত হয়েছিল।

উপসংহার

  • সহজ সমাধান ভিত্তি করে !str, ==, ===এবং lengthসব ব্রাউজারের জন্য দ্রুত (এ, বি, সি, জি, আমি জে)
  • নিয়মিত প্রকাশের উপর ভিত্তি করে সমাধানগুলি ( test, replace) এবং charAtসমস্ত ব্রাউজারের জন্য সবচেয়ে ধীর হয় (এইচ, এল, এম, পি)
  • দ্রুততম হিসাবে চিহ্নিত সমাধানগুলি কেবলমাত্র একটি পরীক্ষার জন্য দ্রুততম - তবে অনেক রানেই এটি 'দ্রুত' সমাধান দলের ভিতরে পরিবর্তিত হয়

এখানে চিত্র বিবরণ লিখুন

বিস্তারিত

নীচের স্নিপেটে আমি পৃথক ইনপুট পরামিতি ব্যবহার করে নির্বাচিত 18 পদ্ধতির ফলাফলগুলির সাথে তুলনা করি

  • "" "a" " "- খালি স্ট্রিং, অক্ষরের সাথে স্ট্রিং এবং স্পেস সহ স্ট্রিং
  • [] {} f- অ্যারে, অবজেক্ট এবং ফাংশন
  • 0 1 NaN Infinity - সংখ্যা
  • true false - বুলিয়ান
  • null undefined

সমস্ত পরীক্ষিত পদ্ধতিগুলি সমস্ত ইনপুট ক্ষেত্রে সমর্থন করে না।

এবং তারপরে সমস্ত পদ্ধতির জন্য আমি str = ""ব্রাউজারগুলি Chrome v78.0.0, সাফারি v13.0.4, এবং ফায়ারফক্স v71.0.0- এর জন্য গতি পরীক্ষার কেস সম্পাদন করি - আপনি এখানে আপনার মেশিনে পরীক্ষা চালাতে পারেন

এখানে চিত্র বিবরণ লিখুন


এটি সত্যিই দুর্দান্ত! আমি এই সব ছড়িয়ে আছি দেখতে ভালোবাসি! ধন্যবাদ!
ওয়েবওয়ান্ডার

এটি পুঙ্খানুপুঙ্খ অধ্যয়ন - ধন্যবাদ
ডায়ান

17

এছাড়াও, যদি আপনি একটি শ্বেতস্পেসে ভরা স্ট্রিংটিকে "খালি" হিসাবে বিবেচনা করেন।

আপনি এই নিয়মিত প্রকাশের সাথে এটি পরীক্ষা করতে পারেন:

!/\S/.test(string); // Returns true if blank.

14

আমি সাধারণত এই জাতীয় কিছু ব্যবহার করি,

if (!str.length) {
    // Do something
}

3
দ্রুততম যদি আপনি জানেন যে চলকটি একটি স্ট্রিং। ভেরিয়েবল অপরিজ্ঞাত করা থাকলে একটি ত্রুটি নিক্ষেপ করে।
অ্যাড্রিয়ান হপ-বেইলি

@ অ্যাড্রিয়ানহপ-বাইলি আপনি কেন একটি অনির্ধারিত পরিবর্তনশীল পরীক্ষা করবেন?
অবিমেল মার্টেল

2
@ অবিমেলমার্টেল কেন নয়? আপনার একটি ভেরিয়েবল রয়েছে যা আপনি ঘোষণা করেছিলেন বা এটি এমন কোনও সুযোগ থেকে আপনাকে দেওয়া হয়েছিল যেমন কোনও পদ্ধতি বা API কল থেকে প্রতিক্রিয়া হিসাবে আপনার কোনও নিয়ন্ত্রণ নেই। আপনি ধরে নিতে পারেন এটিতে একটি মান রয়েছে এবং উপরের চেকটি ব্যবহার করুন তবে এটি সংজ্ঞায়িত না হলে বা শূন্য হলে আপনি একটি ত্রুটি পাবেন। var পরীক্ষা = নাল; যদি (! টেস্ট.লেন্থ) {সতর্কতা ("
অ্যাড্রিয়ান

ওপি "খালি স্ট্রিংয়ের জন্য কীভাবে চেক করবেন" জিজ্ঞাসা করছিলেন, অপরিজ্ঞাত পরিবর্তনশীল কোনও খালি স্ট্রিং নয়। যাইহোক আপনি typeof variable != "undefined"খালি কিনা তা পরীক্ষা করার আগে পরীক্ষা করতে পারেন could
অবিমেল মার্টেল

10

আমি এমন কোনও উত্তর লক্ষ্য করিনি যা একটি স্ট্রিংয়ে নাল অক্ষরের সম্ভাবনা বিবেচনা করে। উদাহরণস্বরূপ, যদি আমাদের কাছে নাল অক্ষরের স্ট্রিং থাকে:

var y = "\0"; // an empty string, but has a null character
(y === "") // false, testing against an empty string does not work
(y.length === 0) // false
(y) // true, this is also not expected
(y.match(/^[\s]*$/)) // false, again not wanted

এর শ্লীলতা পরীক্ষা করার জন্য কেউ এই জাতীয় কিছু করতে পারে:

String.prototype.isNull = function(){ 
  return Boolean(this.match(/^[\0]*$/)); 
}
...
"\0".isNull() // true

এটি একটি নাল স্ট্রিং এবং খালি স্ট্রিংয়ে কাজ করে এবং এটি সমস্ত স্ট্রিংয়ের জন্য অ্যাক্সেসযোগ্য। এছাড়াও, এটি অন্যান্য জাভাস্ক্রিপ্ট খালি বা শ্বেতস্পেস অক্ষর (অর্থাত্ ননব্রেকিং স্পেস, বাইট ক্রম চিহ্ন, লাইন / অনুচ্ছেদ বিভাজক ইত্যাদি) ধারণ করে বাড়ানো যেতে পারে।


2
আকর্ষণীয় বিশ্লেষণ। আমি মনে করি না এটি 99.9% ক্ষেত্রে প্রাসঙ্গিক হবে। কিন্তু আমি সম্প্রতি খুঁজে পেয়েছি যে মাইএসকিউএল একটি কলামটিকে "নাল" করতে মূল্যায়ন করে যদি (এবং কেবলমাত্র) সেই কলামটিতে নাল অক্ষর ("\ 0") থাকে। অন্যদিকে ওরাকল "\ 0" নাল হিসাবে মূল্যায়ন করবে না, এটিকে দৈর্ঘ্য 1 এর স্ট্রিং হিসাবে বিবেচনা করতে পছন্দ করবে (যেখানে এটি একটি অক্ষর নাল চরিত্র)। এটি সঠিকভাবে মোকাবেলা না করা হলে বিভ্রান্তির কারণ হতে পারে, কারণ অনেক ওয়েব-বিকাশকারী ব্যাক-এন্ড ডাটাবেস নিয়ে কাজ করে যা বিভিন্ন ধরণের "নাল" মানগুলির মধ্য দিয়ে যেতে পারে। এটি প্রতিটি বিকাশকারীদের মনের পিছনে থাকা উচিত।
কার্টবোরহর্স্স

10

ইতিমধ্যে আমাদের একটি ফাংশন থাকতে পারে যা শূন্য, অপরিজ্ঞাত, '', '', {}, [] এর মতো সমস্ত 'শূন্যপদ' পরীক্ষা করে । সুতরাং আমি এই লিখেছি।

var isEmpty = function(data) {
    if(typeof(data) === 'object'){
        if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){
            return true;
        }else if(!data){
            return true;
        }
        return false;
    }else if(typeof(data) === 'string'){
        if(!data.trim()){
            return true;
        }
        return false;
    }else if(typeof(data) === 'undefined'){
        return true;
    }else{
        return false;
    }
}

কেস এবং ফলাফল ব্যবহার করুন।

console.log(isEmpty()); // true
console.log(isEmpty(null)); // true
console.log(isEmpty('')); // true
console.log(isEmpty('  ')); // true
console.log(isEmpty(undefined)); // true
console.log(isEmpty({})); // true
console.log(isEmpty([])); // true
console.log(isEmpty(0)); // false
console.log(isEmpty('Hey')); // false

10

স্ট্রিং খালি কিনা তা যাচাই করার জন্য এখন স্ট্রিং.এম্পটির মতো সরাসরি পদ্ধতি নেই। তবে আপনার কোডে আপনি খালি স্ট্রিংয়ের জন্য একটি র‍্যাপার চেক ব্যবহার করতে পারেন:

// considering the variable in which your string is saved is named str.

if (str && str.length>0) { 

  // Your code here which you want to run if the string is not empty.

}

এটি ব্যবহার করে আপনিও নিশ্চিত করতে পারেন যে স্ট্রিং অপরিজ্ঞাত বা নালও নয়। মনে রাখবেন, অপরিজ্ঞাত, নাল এবং খালি তিনটি ভিন্ন জিনিস।


এটি নাল বা অপরিজ্ঞাত কারণে একটি ত্রুটি ছুঁড়ে ফেলবে যে আমরা সরাসরি কোনও চলকটির উপর সরাসরি অপারেশন করা উচিত যা নাল বা অপরিজ্ঞাত - অন্য উত্তরগুলিতে বর্ণিত হিসাবে এটি করার আগে স্ট্রিংয়ের জন্য পরীক্ষা করা উচিত এবং এটিও লক্ষ্য করুন যে এটি লেট অ্যাবিসি তে কাজ করবে = '' তবে চলুন না abc = '' এ, এই দুটি পৃথক।
হোয়ামি

বিবেচনা করুন let rand = ()=>Math.random(), তারপর rand && rand.length > 0)মিথ্যা প্রত্যাবর্তন করুন, তবে স্পষ্টভাবে fn "খালি" নয়। অর্থাৎ এটি কোনও ফাংশনের জন্য মিথ্যা ফিরিয়ে দেয় যার কোনও ফর্ম্যাট প্যারামিটার নেই।
রবজি

@ রবজি Math.random()একটি সংখ্যা দেয়, স্ট্রিংকে না। এবং এই উত্তরটি স্ট্রিং সম্পর্কে। ;-)
হর্ষিত আগরওয়াল

10

এই সমস্ত উত্তর সুন্দর।

তবে আমি নিশ্চিত হতে পারি না যে পরিবর্তনশীল একটি স্ট্রিং, কেবল ফাঁকা স্থান নেই (এটি আমার পক্ষে গুরুত্বপূর্ণ) এবং এতে '0' (স্ট্রিং) থাকতে পারে।

আমার সংস্করণ:

function empty(str){
    return !str || !/[^\s]+/.test(str);
}

empty(null); // true
empty(0); // true
empty(7); // false
empty(""); // true
empty("0"); // false
empty("  "); // true

জেসফিডেলে নমুনা ।


1
তাই না? যদি আপনি কোনও স্ট্রিংয়ের প্রত্যাশা করে থাকেন empty(0)এবং empty(7)একই মানটি ফেরত দেওয়া উচিত।
বেনেট ম্যাকএলউই

আমার বিশেষ ক্ষেত্রে - empty("0")অবশ্যই ফিরে আসতে হবে false(কারণ এটি একটি খালি স্ট্রিং নয়) তবে empty(0)অবশ্যই trueখালি থাকার কারণে ফিরে আসতে হবে :)
এন্ড্রন

কিন্তু 0 নয় খালি! এটি একটি সংখ্যা, এবং সংখ্যাগুলি পূর্ণ বা খালি থাকতে পারে না। অবশ্যই এটি আপনার ফাংশন এবং তাই অবশ্যই আপনার প্রয়োজনীয়তা মেটানো উচিত তবে emptyএই ক্ষেত্রে একটি বিভ্রান্তিমূলক নাম।
বেনেট ম্যাকএলউই 21

আমি মনে করি যে নামটি emptyভাল। খালি ফাংশন জন্য পিএইচপি ডক্সে : এবং এই ফাংশন Returns FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.মধ্যে পার্থক্য PHP- যে স্ট্রিং '0'খালি হিসাবে চিহ্নিত করা হবে না।
অ্যান্ড্রন

আমি যেমন বলেছি এটি আপনার ফাংশন: আপনি যা চান তা কল করুন। তবে emptyএটি একটি ভুল এবং বিভ্রান্তিমূলক নাম। এটি আকর্ষণীয় যে পিএইচপি-রও একটি খারাপ নামযুক্ত emptyফাংশন রয়েছে তবে পিএইচপি-র ব্যর্থতার জাভাস্ক্রিপ্টের সাথে কোনও সম্পর্ক নেই।
বেনেট ম্যাকএলউই 22

10

আমি এখানে একটি ভাল উত্তর দেখতে পাইনি (কমপক্ষে আমার পক্ষে উপযুক্ত কোনও উত্তর নেই)

তাই আমি নিজেই উত্তর দেওয়ার সিদ্ধান্ত নিয়েছি:

value === undefined || value === null || value === "";

এটি অপরিশোধিত কিনা তা আপনার চেক করা শুরু করতে হবে। অন্যথায় আপনার পদ্ধতিটি বিস্ফোরিত হতে পারে এবং তারপরে এটি শূন্য স্ট্রিংয়ের সমান বা সমান কিনা তা আপনি পরীক্ষা করতে পারেন।

আপনি থাকতে পারবেন না !! বা কেবলমাত্র if(value)যদি আপনি পরীক্ষা 0করে থাকেন যে এটি আপনাকে একটি মিথ্যা উত্তর দেয় (0 টি মিথ্যা)।

এই বলে, এটিকে এমন পদ্ধতিতে গুটিয়ে রাখুন:

public static isEmpty(value: any): boolean { return value === undefined || value === null || value === ""; }

PS: আপনার টাইপফোন পরীক্ষা করার দরকার নেই , কারণ এটি পদ্ধতিতে প্রবেশের আগেই এটি বিস্ফোরিত হবে এবং ছোঁড়া হবে


সম্ভবত বুলিয়ান (মান) আরও ভাল ব্যবহার করুন যা নির্ধারিত এবং নাল মানকে (এবং 0, -0, মিথ্যা, এনএএন) কে মিথ্যা হিসাবে গণ্য করে। স্ট্যাকওভারফ্লো
ঝুরাভ্লেভ এ।

9

যদি কেবল খালি নয়, ফাঁকা স্ট্রিংগুলি সনাক্ত করতে হয় তবে আমি গোরালের উত্তরে যুক্ত করব:

function isEmpty(s){
    return !s.length;    
}

function isBlank(s){
    return isEmpty(s.trim());    
}


8

আপনি এটি সহজেই জাভাস্ক্রিপ্টের নেটিভ স্ট্রিং অবজেক্টে যুক্ত করতে পারেন এবং এটিকে বারবার পুনরায় ব্যবহার করতে পারেন ... খালি স্ট্রিং চেক করতে চাইলে নীচের কোডের মতো সাধারণ কিছু আপনার পক্ষে কাজ করতে পারে :
''

String.prototype.isEmpty = String.prototype.isEmpty || function() {
  return !(!!this.length);
}

অন্যথায় আপনি যদি ''খালি স্ট্রিং এবং ' 'স্পেস সহ উভয়ই পরীক্ষা trim()করতে চান তবে নীচের কোডের মতো কিছু যুক্ত করে আপনি এটি করতে পারেন:

String.prototype.isEmpty = String.prototype.isEmpty || function() {
   return !(!!this.trim().length);
}

এবং আপনি এটিকে এটি কল করতে পারেন:

''.isEmpty(); //return true
'alireza'.isEmpty(); //return false

!(!!this.length)শুধু !this(বা !this.trim()দ্বিতীয় বিকল্পের জন্য) না করে করার কী লাভ ? একটি শূন্য দৈর্ঘ্যের স্ট্রিং ইতিমধ্যে জালিয়াতিপূর্ণ, প্রথম বন্ধনীগুলি অপ্রয়োজনীয় এবং এটিকে তিনবার উপেক্ষা করা একে একবারে উপেক্ষা করার মতোই।
জন মন্টগোমেরি

8

এটা চেষ্টা কর:

export const isEmpty = string => (!string || !string.length);

8

আপনি যদি পরীক্ষক ফাংশনে একটি স্ট্রিং এবং নন-খালি / নাল মান পাস করেন তবে কী হয় তা নিয়ে আমি কিছু গবেষণা করেছি। অনেকেই জানেন, (0 == "") জাভাস্ক্রিপ্টে সত্য, তবে যেহেতু 0 একটি মান এবং খালি বা নাল নয়, আপনি এটির জন্য পরীক্ষা করতে চাইতে পারেন।

নিম্নলিখিত দুটি ফাংশনগুলি কেবল অপরিজ্ঞাত, নাল, খালি / সাদা স্থানের মানগুলির জন্য সত্য এবং অন্য সমস্ত কিছুর জন্য মিথ্যা, যেমন সংখ্যা, বুলিয়ান, অবজেক্টস, এক্সপ্রেশন ইত্যাদি return

function IsNullOrEmpty(value)
{
    return (value == null || value === "");
}
function IsNullOrWhiteSpace(value)
{
    return (value == null || !/\S/.test(value));
}

আরও জটিল উদাহরণ বিদ্যমান, তবে এগুলি সহজ এবং ধারাবাহিক ফলাফল দেয়। অপরিবর্তিত জন্য পরীক্ষা করার দরকার নেই, কারণ এটি (মান == নাল) চেক অন্তর্ভুক্ত। আপনি এই জাতীয় স্ট্রিংগুলিতে তাদের যুক্ত করে সি # আচরণের নকল করতে পারেন :

String.IsNullOrEmpty = function (value) { ... }

আপনি এটিকে স্ট্রিংস প্রোটোটাইপে রাখতে চান না, কারণ স্ট্রিং-শ্রেণীর উদাহরণটি যদি নਾਲ হয় তবে এটি ত্রুটিযুক্ত হবে:

String.prototype.IsNullOrEmpty = function (value) { ... }
var myvar = null;
if (1 == 2) { myvar = "OK"; } // Could be set
myvar.IsNullOrEmpty(); // Throws error

আমি নিম্নলিখিত মান অ্যারে দিয়ে পরীক্ষা করেছি। সন্দেহ থাকলে আপনার ফাংশন পরীক্ষা করতে আপনি এটি লুপ করতে পারেন।

// Helper items
var MyClass = function (b) { this.a = "Hello World!"; this.b = b; };
MyClass.prototype.hello = function () { if (this.b == null) { alert(this.a); } else { alert(this.b); } };
var z;
var arr = [
// 0: Explanation for printing, 1: actual value
    ['undefined', undefined],
    ['(var) z', z],
    ['null', null],
    ['empty', ''],
    ['space', ' '],
    ['tab', '\t'],
    ['newline', '\n'],
    ['carriage return', '\r'],
    ['"\\r\\n"', '\r\n'],
    ['"\\n\\r"', '\n\r'],
    ['" \\t \\n "', ' \t \n '],
    ['" txt \\t test \\n"', ' txt \t test \n'],
    ['"txt"', "txt"],
    ['"undefined"', 'undefined'],
    ['"null"', 'null'],
    ['"0"', '0'],
    ['"1"', '1'],
    ['"1.5"', '1.5'],
    ['"1,5"', '1,5'], // Valid number in some locales, not in JavaScript
    ['comma', ','],
    ['dot', '.'],
    ['".5"', '.5'],
    ['0', 0],
    ['0.0', 0.0],
    ['1', 1],
    ['1.5', 1.5],
    ['NaN', NaN],
    ['/\S/', /\S/],
    ['true', true],
    ['false', false],
    ['function, returns true', function () { return true; } ],
    ['function, returns false', function () { return false; } ],
    ['function, returns null', function () { return null; } ],
    ['function, returns string', function () { return "test"; } ],
    ['function, returns undefined', function () { } ],
    ['MyClass', MyClass],
    ['new MyClass', new MyClass()],
    ['empty object', {}],
    ['non-empty object', { a: "a", match: "bogus", test: "bogus"}],
    ['object with toString: string', { a: "a", match: "bogus", test: "bogus", toString: function () { return "test"; } }],
    ['object with toString: null', { a: "a", match: "bogus", test: "bogus", toString: function () { return null; } }]
];

আপনি যদি কেবল == ব্যবহার করা বন্ধ করেন এবং === ব্যবহার করেন, তবে এটি (s === "") থাকলে সমস্যাটি সমাধান করে।
স্কট মার্কাস

8

এটি খালি স্ট্রিং কিনা তা পরীক্ষা করতে:

if(val==="")...

এটি খালি স্ট্রিং বা কোনও মানের জন্য লজিক্যাল সমতুল্য কিনা তা পরীক্ষা করতে (নাল, অপরিজ্ঞাত, 0, ন্যান, মিথ্যা, ...):

if(!val)...

7

কোনও isEmpty()পদ্ধতি নেই, আপনাকে প্রকার এবং দৈর্ঘ্যের জন্য পরীক্ষা করতে হবে:

if (typeof test === 'string' && test.length === 0){
  ...

প্রকার চেক অর্ডার রানটাইম ত্রুটিগুলি এড়ানোর যখন প্রয়োজন হয় testহয় undefinedবা null


7

হোয়াইটস্পেস স্ট্রিং উপেক্ষা করে, আপনি নাল, খালি এবং অপরিজ্ঞাত পরীক্ষা করতে এটি ব্যবহার করতে পারেন:

var obj = {};
(!!obj.str) // Returns false

obj.str = "";
(!!obj.str) // Returns false

obj.str = null;
(!!obj.str) // Returns false

এটি সংক্ষিপ্ত এবং এটি অপরিজ্ঞাত বৈশিষ্ট্যের জন্য কাজ করে, যদিও এটি সর্বাধিক পঠনযোগ্য নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.