স্ট্রিংয়ের অক্ষর এবং শ্বেতস্পেস রয়েছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি, কেবল সাদা জায়গা নয়?


134

কোনও স্ট্রিংয়ে কেবল সাদা স্থান রয়েছে কিনা তা যাচাই করার সর্বোত্তম উপায় কী?

স্ট্রিংটিতে হোয়াইটস্পেসের সাথে মিলিত অক্ষর থাকতে দেওয়া হয় তবে কেবল সাদা স্থান নয়।

উত্তর:


293

সমগ্র স্ট্রিং পরীক্ষণ আছে কিনা কেবল সাদা ব্যবধান দেখতে পরিবর্তে ঠিক আছে যদি অন্তত একটি অক্ষর দেখতে চেক হোয়াইটস্পেস:

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}

7
নাল মান হতে কেবল মাইস্ট্রিংয়ের সাথে সাবধানতা অবলম্বন করুন। এটি সত্য ফিরে আসবে: /\S/.test(null) == সত্য
দিলশোদ তাদজিবায়েভ

6
এই উত্তর অনেক তাদের মধ্যে regex আছে! এর অর্থ কী জেএসে জিনিস সনাক্ত করার কোনও দেশীয় উপায় নেই? স্ট্রিং নেই? ইস্পেস স্পেসস বা কিছু? কোন নেটিভ ট্রিম হয় না?
JonnyRaa

4
@JonnyLeeds যেহেতু Regex এমনকি JS সিনট্যাক্স সমর্থন আছে, এক বলতে পারে এটা কোনো জাহাজে ইউটিলিটি পদ্ধতির চেয়ে আসলে আরো নেটিভ এর;)
গুহা Broek রিকার্ডো ভ্যান

38

আপনার ব্রাউজারটি যদি trim()ফাংশন সমর্থন করে তবে সবচেয়ে সহজ উত্তর

if (myString && !myString.trim()) {
    //First condition to check if string is not empty
    //Second condition checks if string contains just whitespace
}

আজকাল যখন IE 8 আরআইপি হয়, এটি দেশী বাস্তবায়নের উপর নির্ভর করে সবচেয়ে পরিষ্কার এবং সবচেয়ে কার্যকর সমাধান কর্মক্ষমতা অনুযায়ী। এবং এটি ট্যাব এবং নতুন লাইনগুলির সাথে সঠিকভাবে কাজ করে।
আলেকজান্ডার আবাকুমভ

35
if (/^\s+$/.test(myString))
{
      //string contains only whitespace
}

1 বা বেশি হোয়াইটস্পেস অক্ষরের জন্য এই চেক, যদি আপনি এটি একটি খালি স্ট্রিং তারপর প্রতিস্থাপন মেলে +দিয়ে *


18

আচ্ছা, আপনি যদি jQuery ব্যবহার করেন তবে এটি আরও সহজ।

if ($.trim(val).length === 0){
   // string is invalid
} 

1
নিউলাইন এবং ট্যাবটির জন্যও কাজ করে, যেখানে উপরের রেজেক্স উদাহরণগুলি কেবল সাদা স্থান ব্যতীত অন্য কোনও কিছুর অভাবের জন্য অনুসন্ধান করছে না। যদিও, আমি নিশ্চিত যে কিছু রেজেক্স জ্ঞান সহ কেউ এমন একটি রেইজেক্স তৈরি করতে পারে যা অনুসন্ধানে ট্যাব / নিউলাইন অন্তর্ভুক্ত করবে।
কেট

আমার ক্ষেত্রে চারটি স্থান ফাঁকা করার জন্য যখন ভেলটি স্থান নির্ধারিত হয় তখন কাজ করে না।
ব্যবহারকারী1451111

7

এই রেজেক্সের বিরুদ্ধে কেবল স্ট্রিংটি পরীক্ষা করুন:

if(mystring.match(/^\s+$/) === null) {
    alert("String is good");
} else {
    alert("String contains only whitespace");
}

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


0

আমি যখন আমার স্ট্রিংয়ের মাঝখানে ফাঁকা স্থান দিতে চাই, তখনই আমি যে নিয়মিত অভিব্যক্তিটি ব্যবহার করে শেষ করেছি তা শুরু বা শেষের দিকে নয়:

[\S]+(\s[\S]+)*

অথবা

^[\S]+(\s[\S]+)*$

সুতরাং, আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আপনি যেমন কিছু করতে পারেন:

if (/^\s+$/.test(myString)) {
    //string contains characters and white spaces
}

অথবা আপনি নিকফ যা বলেছিলেন এবং ব্যবহার করতে পারেন তা করতে পারেন:

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}

0

আমি স্ট্রিংয়ে কেবল শ্বেত স্থান রয়েছে কিনা তা সনাক্ত করতে নিম্নলিখিত পদ্ধতিটি ব্যবহার করেছি। এটি খালি স্ট্রিংগুলির সাথেও মেলে।

if (/^\s*$/.test(myStr)) {
  // the string contains only whitespace
}

0

এটি দ্রুত সমাধান হতে পারে

return input < "\u0020" + 1;

এটি কেবল করণীয় return input < " 1"; যা কেবল বর্ণানুক্রমিক তুলনা করে। যতক্ষণ ইনপুট "1" এর চেয়ে কম বাছাই করা হয় ততক্ষণ সত্য আসবে। উদাহরণ: return " asdfv34562345" < "\u0020" + 1;সত্যকে মূল্যায়ন করে।
ডেরেক জিম্বা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.