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


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.