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




string substring contains string-matching (25)

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

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


Answers

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

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

x = "teststring";

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

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

x = "teststring";

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

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

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

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 শিম প্রয়োজন হতে পারে।



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

indexof()

আসলে হতে হবে

indexOf()

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

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

আপনি .indexOf String.prototype.indexOf খুঁজছেন।

indexOf substring একটি সূচক ফিরে যাচ্ছে। পদার্থ সূত্রপাত শুরু হবে যেখানে সূচক। কোন মিল নেই, একটি -1 ফিরে। এখানে সেই ধারণার একটি সহজ ডেমো রয়েছে:

var str = "Hello World"; // For example, lets search this string,
var term = "World"; // for the term "World",
var index = str.indexOf(term); // and get its index.
if (index != -1) { // If the index is not -1 then the term was matched in the string,
  alert(index); // and we can do some work based on that logic. (6 is alerted)
}


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

 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

আপনি সহজেই এই বিবৃতি সহ স্ট্রিংয়ের জন্য একটি 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; }; }

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

প্রথম বিকল্প: 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 সামঞ্জস্যপূর্ণ টেবিলে নজর রাখুন।


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

'str1'.includes('str2');

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

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

স্ট্রিংয়ে অন্তর্মুখী এবং সর্বাধিক একটি match() করুন। আপনি যা খুঁজছেন তা অর্জন করতে এই কাজ করুন:

var stringData ="anyString Data";

var subStringToSearch = "any";

// This will give back the substring if matches and if not returns null
var doesContains = stringData.match(subStringToSearch);

if(doesContains !=null) {
    alert("Contains Substring");
}

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

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

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


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 str="This is testing for javascript search !!!";
if(str.search("for") != -1) {
   //logic
} 

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

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+'');


সহজ কাজকর্ম

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

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


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

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

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

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


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

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 সর্বোত্তম পছন্দ হতে পারে, যদি এটি এমন একটি বিন্দুতে আসে যেখানে গতি সম্পর্কিত বিষয় রয়েছে।


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

RegExp.test(string)


আপনি জাভাস্ক্রিপ্ট search() পদ্ধতি ব্যবহার করতে পারেন।

সিনট্যাক্স হল: string.search(regexp)

এটি কোনও মিল পাওয়া গেলে ম্যাচটির অবস্থান, বা -1।

এখানে উদাহরণ দেখুন: jsref_search

আপনি একটি জটিল নিয়মিত অভিব্যক্তি সিনট্যাক্স প্রয়োজন হয় না। আপনি তাদের সাথে পরিচিত না হলে একটি সহজ st.search("title") করতে হবে। আপনি যদি আপনার পরীক্ষার ক্ষেত্রে st.search(/title/i) হতে চান তবে আপনাকে st.search(/title/i)


উদাহরণ

var a  = "Test String";

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

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

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 হয়।


var index = haystack.indexOf(needle);

আমি সিএসএস ক্লাস ব্যবহার .hide { display: none!important; } .hide { display: none!important; }

লুকানোর জন্য / দেখানোর জন্য, আমি .addClass("hide")/.removeClass("hide") । দৃশ্যমানতা পরীক্ষা করার জন্য, আমি .hasClass("hide") ব্যবহার .hasClass("hide")

যদি আপনি .toggle() বা .animate() পদ্ধতিগুলি ব্যবহার করার পরিকল্পনা না করেন তবে এটি উপাদানগুলি পরীক্ষা / লুকান / দেখানোর একটি সহজ এবং পরিষ্কার উপায়।





javascript string substring contains string-matching