javascript কিভাবে একটি স্ট্রিং জাভাস্ক্রিপ্ট একটি পদার্থবিশেষ রয়েছে কিনা তা পরীক্ষা করবেন?




string substring (24)

আপনার কোডের সমস্যাটি হল জাভাস্ক্রিপ্ট কেস সংবেদনশীল। আপনার পদ্ধতি কল

indexof()

আসলে হতে হবে

indexOf()

এটি ফিক্স করার চেষ্টা করুন এবং এটি সাহায্য করে দেখুন:

if (test.indexOf("title") !=-1) {
    alert(elm);
    foundLinks++;
}

সাধারণত আমি একটি String.contains() পদ্ধতি আশা করি, কিন্তু এক হতে বলে মনে হচ্ছে না।

এই জন্য চেক করার একটি যুক্তিসঙ্গত উপায় কি?


String.prototype.indexOf() অথবা String.prototype.search() ?

যেমনটি ইতিমধ্যে উল্লেখ করা হয়েছে, জাভাস্ক্রিপ্ট স্ট্রিংগুলির একটি String.prototype.indexOfsearch পদ্ধতি উভয়ই আছে।

উভয়ের মধ্যে কী পার্থক্য হল, indexOf শুধুমাত্র প্লেইন সাবস্ট্রিংয়ের জন্য, যখন search নিয়মিত এক্সপ্রেশনগুলিকে সমর্থন করে। অবশ্যই, indexOf ব্যবহার করে একটি indexOf এটা দ্রুত।

জাভাস্ক্রিপ্টে দেখুন, indexOf () এবং অনুসন্ধান () এর মধ্যে পার্থক্য কি?

আপনার নিজস্ব String.prototype.contains() পদ্ধতি বাস্তবায়ন

আপনি যদি নিজের স্ট্রিংয়ে নিজের স্ট্রিংটি যুক্ত করতে চান তবে এটি করার সর্বোত্তম এর পদ্ধতি হতে হবে:

if (!String.prototype.contains) {
    String.prototype.contains = function (arg) {
        return !!~this.indexOf(arg);
    };
}

আপনি এটি ভালো ব্যবহার করবেন:

'Hello World'.contains('orl');

একটি কাস্টম ইউটিলিটি লাইব্রেরি বাস্তবায়ন

জাভাস্ক্রিপ্টে স্ট্যান্ডার্ড অবজেক্টগুলিতে নিজের নিজস্ব কাস্টম পদ্ধতি যুক্ত করার জন্য এটি সাধারণত frowned হয়, উদাহরণস্বরূপ, কারণ এটি সামঞ্জস্যের অগ্রসর হতে পারে।

আপনি যদি সত্যিই আপনার নিজস্ব পদ্ধতি এবং / অথবা অন্য কাস্টম স্ট্রিং পদ্ধতিগুলি চান তবে আপনার নিজের ইউটিলিটি লাইব্রেরি তৈরি করা এবং সেই লাইব্রেরিতে আপনার কাস্টম স্ট্রিং পদ্ধতিগুলি যোগ করা আরও ভাল।

var helper = {};

helper.string = {
    contains : function (haystack, needle) {
        return !!~haystack.indexOf(needle);
    },
    ...
};

আপনি এটি ভালো ব্যবহার করবেন:

helper.string.contains('Hello World', 'orl');

একটি তৃতীয় পক্ষের ইউটিলিটি লাইব্রেরি ব্যবহার করে

আপনি যদি নিজের কাস্টম সহায়ক লাইব্রেরি তৈরি করতে না চান তবে অবশ্যই - তৃতীয় পক্ষের ইউটিলিটি লাইব্রেরি ব্যবহার করার বিকল্প সর্বদা আছে। @ Lodash দ্বারা উল্লেখ করা , Lodash এবং Underscore.js সবচেয়ে জনপ্রিয়।

লোডশে, আপনি _.includes() ব্যবহার করতে পারেন, যা আপনি _.includes() ব্যবহার করেন:

_.includes('Hello World', 'orl');

_.str.include() , আপনি _.str.include() ব্যবহার করতে পারেন, যা আপনি এটি ব্যবহার করেন:

_.str.include('Hello World', 'orl');

কিছু বৈধ সমাধান সংগ্রহ করার জন্য:

var stringVariable = "some text";
var findString = "text";

//using `indexOf()`
var containResult1 = stringVariable.indexOf(findString) != -1;
document.write(containResult1+', ');

//using `lastIndexOf()`
var containResult2 = stringVariable.lastIndexOf(findString) != -1;
document.write(containResult2+', ');

//using `search()`
var containResult3 = stringVariable.search(findString) != -1;
document.write(containResult3+', ');
     
//using `split()`
var containResult4 = stringVariable.split(findString)[0] != stringVariable;
document.write(containResult4+'');


উল্লেখিত হিসাবে আপনি একটি রাজধানী "ও" সঙ্গে indexOf কল করতে হবে। এটি উল্লেখ করা উচিত যে, জাভাস্ক্রিপ্ট শ্রেণিতে একটি সংরক্ষিত শব্দ, আপনাকে এই ডাটা বৈশিষ্ট্যটি পেতে ক্লাসName ব্যবহার করতে হবে। সম্ভবত এটি ব্যর্থ হওয়ার কারণ এটি একটি নিল মান প্রদান করছে। আপনি আপনার বর্গ মান পেতে নিম্নলিখিত কাজ করতে পারেন ...

var test = elm.getAttribute("className");
//or
var test = elm.className

এই শুধু আমার জন্য কাজ। এটি এমন স্ট্রিংগুলির জন্য নির্বাচন করে যা "মুছে ফেলা হয়েছে" শব্দটি ধারণ করে না।

if (eventString.indexOf("Deleted:") == -1)

ওয়েবে এবং এখানে পাওয়া কোড স্নিপেট ব্যবহার করার পরিবর্তে, আপনি একটি ভাল-পরীক্ষিত এবং নথিভুক্ত লাইব্রেরি ব্যবহার করতে পারেন। দুটি বিকল্প আমি সুপারিশ করবে:

প্রথম বিকল্প: Lodash ব্যবহার করুন: এতে একটি পদ্ধতি includes :

_.includes('foobar', 'ob');
// → true

লোড্যাশ এনপিএম এর জন্য সবচেয়ে জনপ্রিয় জাভাস্ক্রিপ্ট লাইব্রেরি নির্ভরতা এবং সহজে জাভাস্ক্রিপ্ট ইউটিলিটি পদ্ধতির লোড রয়েছে। তাই অনেক প্রকল্পের জন্য আপনি এই যাই হোক না কেন চাই ;-)

দ্বিতীয় বিকল্প: অথবা Underscore.string ব্যবহার করুন: এটি একটি include পদ্ধতি আছে:

_.str.include('foobar', 'ob');
// → true

এখানে আন্ডারস্কোর.স্ট্রিংয়ের বিবরণ রয়েছে, এটি কেবল 9 কেবি যোগ করে তবে এটি আপনাকে সমস্ত সুবিধাদি দেয় যা একটি ভাল-পরীক্ষিত এবং নথিবদ্ধ লাইব্রেরি অনুলিপি কোড স্ন্যিপেটগুলিতে আছে:

Underscore.string স্ট্রিং সহ আরামদায়ক ম্যানিপুলেশনের জন্য জাভাস্ক্রিপ্ট লাইব্রেরি, প্রোটোটাইপ.জেএস, রাইট.জেএস, আন্ডারস্কোর এবং সুন্দর রুবি ভাষা দ্বারা অনুপ্রাণিত Underscore.js এর জন্য এক্সটেনশান।

Underscore.string আপনাকে অনেকগুলি কার্যকর ফাংশন সরবরাহ করে: মূলধন, পরিষ্কার, অন্তর্ভুক্ত, গণনা, পাল্টা HTML, unescapeHTML, সন্নিবেশ, splice, শুরু, সহ, শেষ, শিরোনাম, শিরোনাম, ছিনতাই এবং ইত্যাদি।

ভাল মনে রাখবেন, Underscore.string আন্ডারস্কোর.জেএস দ্বারা প্রভাবিত কিন্তু এটি ছাড়া ব্যবহার করা যেতে পারে।

শেষ না অন্তত: জাভাস্ক্রিপ্ট সংস্করণ ES6 আসে একটি অন্তর্নির্মিত পদ্ধতি includes :

'foobar'.includes('ob');
// → true

বেশিরভাগ আধুনিক ব্রাউজার ইতিমধ্যে এটি সমর্থন করে, ES6 সামঞ্জস্যপূর্ণ টেবিলে নজর রাখুন।


আপনি কুৎসিত -1 চেক লিখতে একটি বিকল্প খুঁজছেন ছিল, আপনি পরিবর্তে একটি ~ tilde প্রি।

if (~haystack.indexOf('needle')) alert('found');

জো জিমম্যানন - আপনি দেখতে পাবেন যে ~ অন -1 ব্যবহার করে এটি 0 রূপান্তর করে। সংখ্যা 0 একটি মিথ্যা মান, অর্থাত এটি একটি বুলিয়ান রূপান্তরিত হলে মিথ্যাটির মূল্যায়ন করবে। এটি প্রথমে একটি বড় অন্তর্দৃষ্টি বলে মনে হচ্ছে না, তবে সূচী-এর মত ফাংশন মনে রাখবেন -1 যখন ক্যোয়ারী পাওয়া যাবে না। এর মানে এইরকম কিছু লেখার পরিবর্তে:

if (someStr.indexOf("a") >= 0) {
  // Found it
} else  {
  // Not Found
}

আপনার কোডটিতে এখন আপনার কম সংখ্যক অক্ষর থাকতে পারে তাই আপনি এটির মতো লিখতে পারেন:

if (~someStr.indexOf("a")) {
  // Found it
} else  {
  // Not Found
}

আরো বিস্তারিত এখানে


কোড এই টুকরা ভাল কাজ করা উচিত:

var str="This is testing for javascript search !!!";
if(str.search("for") != -1) {
   //logic
} 

সহজ কাজকর্ম

if (!String.prototype.contains) {
  String.prototype.contains= function() {
    return String.prototype.indexOf.apply(this, arguments) !== -1;
  };
}

আপনি নিম্নলিখিত ভাবে ব্যবহার করতে পারেন

"hello".contains("he") // true
"hello world".contains("lo w")//true
"hello world".contains("lo wa")//false
"hello world".contains(" ")//true
"hello world".contains("  ")//false

এমডিএন রেফারেন্স


উদাহরণ

var a  = "Test String";

if(a.search("ring")!=-1){
     //exist 
} else {
     //not found 
}

var index = haystack.indexOf(needle);

আপনি jQuery এর ব্যবহার করতে পারেন :contains নির্বাচক :contains

$("div:contains('John')")

এখানে এটি পরীক্ষা করুন: contains-selector


এটি করার জন্য একটি মসৃণ এবং আরও ভাল উপায় রয়েছে এবং এটি (বিটওয়াইজ নয়) অপারেটর ব্যবহার করছে।

if(~"John".indexOf("J")) {
  alert("Found")
}
else {
  alert("Not Found");
}

বিটওয়াইটি "x" কে রূপান্তর করে না - (x + 1) তাই, x যদি indexOf method থেকে 1-আউট হয়ে যায়। তাহলে এটি - (-1 + 1) = -0 রূপান্তরিত হবে যা একটি মিথ্যা মূল্য।


যেহেতু প্রশ্নটি বেশ জনপ্রিয়, তাই আমি মনে করি আমি কোডটিতে একটু আধুনিক গন্ধ যুক্ত করতে পারি।

// const           : creates an immutable constant
const allLinks   = document.getElementsByTagName("a");
// [].reduce.call  : gives access to the reduce method on a HTMLCollection
// () => {}        : ES6 arrow function
const foundLinks = [].reduce.call(allLinks, (sum, link) => {
     // bitwise OR : converts the boolean value to a number
     return sum + (link.classList.contains("title") | 0);
}, 0);

// template literal
console.log(`Found ${foundLinks || "no"} title class`);

BTW, সঠিক উত্তরটি ভুল বানান indexOf বা অ-মানক স্ট্রিং. String.contains । একটি বহিরাগত লাইব্রেরি লোড হচ্ছে (বিশেষ করে যদি কোডটি বিশুদ্ধ জাভাস্ক্রিপ্টে লেখা থাকে) অথবা String.prototype সাথে String.prototype বা নিয়মিত অভিব্যক্তি ব্যবহার করে একটু বেশি String.prototype হয়।


ES6 এ , আমাদের কিছু কল রয়েছে যা আপনি যা চান তা ঠিক করে দেয়: তাই আপনি কেবল এটিকে করতে পারেন:

'str1'.includes('str2');

এছাড়াও ES5 , যদি আপনি এটি ব্যাপকভাবে ব্যবহার করেন তবে আপনি এটি সহজভাবে এটি যুক্ত করতে পারেন:

String.prototype.includes = String.prototype.includes || function(str) {
  return this.indexOf(str) > -1;
}

জাভাস্ক্রিপ্ট

 var str = "My big string contain apples and oranges";
 var n = str.indexOf("apples"); 
 alert(n); //will alert 22, -1 if not found

jQuery এর

  <p>My big string contain apples and oranges</p>
  alert($("p:contains(apples)")[0] != undefined); //will alert true if found

যেহেতু প্রোটোটাইপ ব্যবহার করার অভিযোগ আছে, এবং indexOf ব্যবহার করে আপনার কোডটি কম পাঠযোগ্য করে তোলে, এবং যেহেতু regexp ওভারকিল হয়:

function stringContains(inputString, stringToFind) {
    return (inputString.indexOf(stringToFind) != -1);
}

যে আপোষ আমি শেষ পর্যন্ত যাচ্ছে।


এটি করার আরেকটি বিকল্প হল:

আপনি ম্যাচ ফাংশন ব্যবহার করতে পারেন, যা কিছু ভালো:

x = "teststring";

if (x.match("test")) {
     // Code
}

ম্যাচ () নিয়মিত অভিব্যক্তি সহ কাজ করতে পারে:

x = "teststring";

if (x.match(/test/i)) {
     // Code
}

একটি নিয়মিত অভিব্যক্তি ব্যবহার করুন:

RegExp.test(string)


জাভাস্ক্রিপ্ট কোড একটি অ্যারের মধ্যে উপস্থিত contains ব্যবহার পদ্ধতি:

<html>
    <head>
        <h2>Use of contains() method</h2>
        <script>
            Array.prototype.contains = function (element) {
                for (var i = 0; i < this.length; i++) {
                    if (this[i] == element) {
                        return true;
                    }
                }
                return false;
            }
            arr1 = ["Rose", "India", "Technologies"];
            document.write("The condition is "+arr1.contains("India")+"<br>");
        </script>
    </head>

    <b>[If the specified element is present in the array, it returns true otherwise
    returns false.]</b>

</html>

প্রদত্ত কোডে উপস্থিত পদ্ধতিটি নির্ধারণ করে যে নির্দিষ্ট উপাদান অ্যারে উপস্থিত contains কিনা। নির্দিষ্ট উপাদান অ্যারের উপস্থিত থাকলে, এটি সত্য ফেরত দেয়, না হলে এটি মিথ্যা প্রদান করে।


String.prototype.includes() ES6 এ চালু করা হয়েছে।

একটি স্ট্রিং অন্য স্ট্রিং মধ্যে পাওয়া যায় কিনা তা নির্ধারণ করে, সত্য হিসাবে সত্য বা মিথ্যা ফিরে।

বাক্য গঠন

var contained = str.includes(searchString [, position]);  

পরামিতি

searchString

এই স্ট্রিং জন্য অনুসন্ধান করা একটি স্ট্রিং।

position

এই স্ট্রিংয়ের অবস্থান যা অনুসন্ধান searchString জন্য 0 ডিফল্ট অনুসন্ধান শুরু করতে।

উদাহরণ

var str = "To be, or not to be, that is the question.";

console.log(str.includes("To be"));    // true
console.log(str.includes("question")); // true
console.log(str.includes("To be", 1)); // false  

বিঃদ্রঃ

এটি পুরানো ব্রাউজারে ES6 শিম প্রয়োজন হতে পারে।


এখানে বর্তমান সম্ভাবনার একটি তালিকা রয়েছে:

1. (ES6) includes - উত্তর দিতে যান

var string = "foo",
    substring = "oo";
string.includes(substring);

2. ES5 এবং পুরোনো indexOf

var string = "foo",
    substring = "oo";
string.indexOf(substring) !== -1;

String.prototype.indexOf অন্যান্য স্ট্রিং স্ট্রিং অবস্থান ফিরে। যদি না পাওয়া যায়, এটা -1 ফিরে আসবে।

3. search - উত্তর দিতে যান

var string = "foo",
    expr = /oo/;
string.search(expr);

4. lodash অন্তর্ভুক্ত - উত্তর দিতে যান

var string = "foo",
    substring = "oo";
_.includes(string, substring);

5. RegExp - উত্তর দিতে যান

var string = "foo",
    expr = /oo/;  // no quotes here
expr.test(string);

6. ম্যাচ - উত্তর দিতে যান

var string = "foo",
    expr = /oo/;
string.match(expr);

পারফরম্যান্স পরীক্ষাগুলি দেখাচ্ছে যে indexOf সর্বোত্তম পছন্দ হতে পারে, যদি এটি এমন একটি বিন্দুতে আসে যেখানে গতি সম্পর্কিত বিষয় রয়েছে।


আপনি সহজেই এই বিবৃতি সহ স্ট্রিংয়ের জন্য একটি contains পদ্ধতি যুক্ত করতে পারেন:

String.prototype.contains = function(it) { return this.indexOf(it) != -1; };

দ্রষ্টব্য: এই ব্যবহার না করার জন্য একটি বৈধ যুক্তি জন্য নীচের মন্তব্য দেখুন। আমার পরামর্শ: আপনার নিজের রায় ব্যবহার করুন।

বিকল্পভাবে:

if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }

জাভাস্ক্রিপ্টে একটি contains পদ্ধতি লিখার একটি সাধারণ উপায় হল:

if (!String.prototype.contains) {
    String.prototype.contains = function (arg) {
        return !!~this.indexOf(arg);
    };
}

Bitwise নেগ্রেশন অপারেটর ( ~ ) -1-0 (মিথ্যা) চালু করতে ব্যবহৃত হয় এবং অন্যান্য সমস্ত মান অ-শূন্য (সত্য) হবে।

ডাবল বুলিয়ান নেগশন অপারেটরগুলি বুলিয়ানের সংখ্যাটি নিক্ষেপ করতে ব্যবহার করা হয়।







string-matching