কোনও স্ট্রিংয়ের সাদা স্থান রয়েছে কিনা তা পরীক্ষা করুন


97

আমি স্ট্রিংয়ের সাদা জায়গা আছে কিনা তা খতিয়ে দেখার চেষ্টা করছি । আমি এই ফাংশনটি পেয়েছি তবে এটি কাজ করছে বলে মনে হচ্ছে না:

function hasWhiteSpace(s) 
{
    var reWhiteSpace = new RegExp("/^\s+$/");

    // Check for white space
    if (reWhiteSpace.test(s)) {
        //alert("Please Check Your Fields For Spaces");
        return false;
    }

    return true;
}

যাইহোক, আমি উদ্ধৃতি যোগ RegExp।

কিছুকি ভুল হল? আমি কি আরও ভাল ব্যবহার করতে পারি? আশা করি জিকিউরি।


আপনার যুক্তি পিছনের দিকে, সত্য অর্থ মিথ্যা।
— ব্রায়ান শ্রথ

4
স্ট্রিংয়ের সাদা অংশ থাকলে আপনি মিথ্যা ফিরিয়ে দিচ্ছেন, আপনার যুক্তি পিছনের দিকে
— ক্রিস্টোফার ফ্রান্সিসকো

এই রেজেক্সটি কেবল স্ট্রিংয়ের সাদা অংশের সাথে নিদর্শনগুলি পরীক্ষা করে, সাদা স্থান থেকে শুরু করে, এক বা একাধিক সাদা স্থান আছে এবং একটি সাদা স্থানের সাথে শেষ হয়।
— প্রিয়া রঞ্জন সিং

উত্তর:


247

আপনি কেবল ইনপুট স্ট্রিংয়ে সূচিপত্র পদ্ধতি ব্যবহার করতে পারেন :

function hasWhiteSpace(s) {
  return s.indexOf(' ') >= 0;
}

অথবা আপনি সাধারণ পদ্ধতিতে পরীক্ষার পদ্ধতিটি ব্যবহার করতে পারেন:

function hasWhiteSpace(s) {
  return /\s/g.test(s);
}

এটি অন্যান্য সাদা স্থানের অক্ষরের মতো ট্যাবও পরীক্ষা করবে।


19
এটি অন্যান্য ধরণের সাদা জায়গার জন্য পরীক্ষা করে না (যেমন,। t)।
— বার্নার্ড চেন

4
আপনি s.indexOf (/ ^ \ s + $ /) তেও রাখতে পারবেন না?
— জোয়েডবার্গ

4
এটি IE8 দ্বারা সমর্থিত নয় (কেবল একটি বন্ধুত্বপূর্ণ
— fyi

@, CMS & @Bernard - কাজ নাও [s.indexOf ( '') কাজ করে]
— শন Rebelo

22

আপনার রেজেক্সের সাথে কোনও মিল নেই match আপনাকে অবশ্যই উদ্ধৃতিগুলি সরিয়ে ফেলতে হবে - "/"অক্ষরগুলি যথেষ্ট।

/^\s+$/স্ট্রিংটি সমস্ত সাদা জায়গা কিনা তা যাচাই করছে :

  • ^ স্ট্রিংয়ের শুরুর সাথে মেলে।
  • \s+ কমপক্ষে 1 টি, সম্ভবত আরও বেশি স্থান
  • $ স্ট্রিংয়ের শেষের সাথে মেলে।

/\s/(এবং কোনও উদ্ধৃতি) দিয়ে রেজেক্সগুলি প্রতিস্থাপনের চেষ্টা করুন


1

এই ফাংশনটি কেবল স্থান নয় (অন্যান্য ট্যাব, ক্যারেজ রিটার্ন ইত্যাদি) সাদা ধরণের অন্যান্য ধরণের জন্য পরীক্ষা করে

import some from 'lodash/fp/some'
const whitespaceCharacters = [' ', '  ',
  '\b', '\t', '\n', '\v', '\f', '\r', `\"`, `\'`, `\\`,
  '\u0008', '\u0009', '\u000A', '\u000B', '\u000C',
'\u000D', '\u0020','\u0022', '\u0027', '\u005C',
'\u00A0', '\u2028', '\u2029', '\uFEFF']
const hasWhitespace = char => some(
  w => char.indexOf(w) > -1,
  whitespaceCharacters
)

console.log(hasWhitespace('a')); // a, false
console.log(hasWhitespace(' ')); // space, true
console.log(hasWhitespace(' ')); // tab, true
console.log(hasWhitespace('\r')); // carriage return, true

আপনি যদি লোডাশ ব্যবহার করতে না চান , তবে এখানে some2 সহ একটি সহজ বাস্তবায়ন দেওয়া হয়েছে s:

const ssome = (predicate, list) =>
{
  const len = list.length;
  for(const i = 0; i<len; i++)
  {
    if(predicate(list[i]) === true) {
      return true;
    }
  }
  return false;
};

তারপর শুধু প্রতিস্থাপন someসঙ্গে ssome।

const hasWhitespace = char => some(
  w => char.indexOf(w) > -1,
  whitespaceCharacters
)

নোডে তাদের জন্য, ব্যবহার করুন:

const { some } = require('lodash/fp');

0

এখানে আমার প্রস্তাবিত বৈধতা:

var isValid = false;

// Check whether this entered value is numeric.
function checkNumeric() {
    var numericVal = document.getElementById("txt_numeric").value;

    if(isNaN(numericVal) || numericVal == "" || numericVal == null || numericVal.indexOf(' ') >= 0) {
        alert("Please, enter a numeric value!");
        isValid = false;
    } else {
        isValid = true;
    }
}

0

একটি সহজ পদ্ধতির আপনি নিতে পারেন হ'ল স্ট্রিংয়ের দৈর্ঘ্যের তুলনা হ'ল সাদা জায়গাগুলিকে কিছুই না দিয়ে প্রতিস্থাপন করা। উদাহরণ স্বরূপ:

function hasWhiteSpaces(string) {
    if (string.length == string.replace(" ", "").length) {return false}
    return true
}

0

ভাষার সংযোজনগুলির সাথে এটি আরও সহজ, এছাড়াও আপনি প্রারম্ভিক ফেরতের সুবিধা নিতে পারেন:

// Use includes method on string
function hasWhiteSpace(s) {
  const whitespaceChars = [' ', '\t', '\n'];
  return whitespaceChars.some(char => s.includes(char));
}

// Use character comparison
function hasWhiteSpace(s) {
  const whitespaceChars = [' ', '\t', '\n'];
  return Array.from(s).some(char => whitespaceChars.includes(char));
}

const withSpace = "Hello World!";
const noSpace = "HelloWorld!";

console.log(hasWhiteSpace(withSpace));
console.log(hasWhiteSpace(noSpace));

console.log(hasWhiteSpace2(withSpace));
console.log(hasWhiteSpace2(noSpace));

আমি পারফরম্যান্স বেঞ্চমার্কটি চালাইনি তবে এগুলি রেজেক্সের চেয়ে দ্রুত হওয়া উচিত তবে ছোট পাঠ্য স্নিপেটের জন্য যাইহোক এতটা পার্থক্য থাকবে না।


0

আরও কয়েকজন উত্তর পোস্ট করেছেন। কিছু সুস্পষ্ট সমস্যা রয়েছে যেমন falseরেজিেক্স পাস হওয়ার পরে এটি ফিরে আসে ^এবং $অপারেটররা সূচনা / শেষ নির্দেশ করে, যেখানে প্রশ্নটি (কোনও) শ্বেতস্পেসের সন্ধান করছে এবং তা নয়: কেবলমাত্র শ্বেত স্পেস রয়েছে (যা রেজেক্স চেক করছে)।

তা ছাড়া, বিষয়টি কেবল একটি টাইপোর।

এই পরিবর্তন...

var reWhiteSpace = new RegExp("/^\s+$/");

এই ...

var reWhiteSpace = new RegExp("\\s+");

এর মধ্যে একটি রেজেক্স ব্যবহার করার সময় RegExp(), আপনাকে অবশ্যই নিম্নলিখিত দুটি জিনিস করতে হবে ...

  • ওমিট শুরু এবং শেষ /বন্ধনী O
  • সমস্ত সিকোয়েন্স কোডগুলি, অর্থাৎ, \\sএর জায়গায় \s, ইত্যাদির দ্বিগুণ-প্রস্থান

উত্স কোড থেকে সম্পূর্ণ কার্যকারী ডেমো ....

$(document).ready(function(e) { function hasWhiteSpace(s) {
        var reWhiteSpace = new RegExp("\\s+");
    
        // Check for white space
        if (reWhiteSpace.test(s)) {
            //alert("Please Check Your Fields For Spaces");
            return 'true';
        }
    
        return 'false';
    }
  
  $('#whitespace1').html(hasWhiteSpace(' '));
  $('#whitespace2').html(hasWhiteSpace('123'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
" ": <span id="whitespace1"></span><br>
"123": <span id="whitespace2"></span>

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