কীভাবে জানবেন যে স্ট্রিংটি jQuery এর একটি নির্দিষ্ট স্ট্রিংয়ের সাথে শুরু / শেষ হয়?


206

আমি জানতে চাইছি যদি একটি স্ট্রিং নির্দিষ্ট বর্ণ / স্ট্রিং দিয়ে শুরু হয় বা এর সাথে jQuery এ শেষ হয়।

উদাহরণ স্বরূপ:

var str = 'Hello World';

if( str starts with 'Hello' ) {
   alert('true');
} else {
   alert('false');
}

if( str ends with 'World' ) {
   alert('true');
} else {
   alert('false');
}

যদি কোন ফাংশন না থাকে তবে কোন বিকল্প?



2
হ্যাঁ, ভাল বা এজ ব্যবহার না করে এখনও ES6 ব্যবহার করবেন না IE
এন্টারেস 42

উত্তর:


388

একটি বিকল্প হ'ল নিয়মিত ভাব প্রকাশ করা:

if (str.match("^Hello")) {
   // do this if begins with Hello
}

if (str.match("World$")) {
   // do this if ends in world
}

1
jQuery এ আমি str.startsWith দিয়ে চেষ্টা করেছি ('কিছু পরীক্ষা করার স্ট্রিং ..') এটি আমাকে ত্রুটি দিয়েছিল, শুরু করেও পদ্ধতিটি পাওয়া যায়নি .. :( তবে স্ট্রিম্যাট ম্যাচ কাজ করেছে। আপনার উত্তরের জন্য ধন্যবাদ
ডাবোরা

2
আপনি যে স্ট্রিংটি পরিদর্শন করছেন সেটিতে কোনও রেগেক্স সংরক্ষিত অক্ষর নেই careful
nokturnal

23
একটি Regex স্ট্রিং এর পরিবর্তে একটি Regex বস্তুর পাসিং সমাধানের সমস্যা @nokturnal উল্লেখ বলে মনে হয়: str.match(/^Hello/)কিন্তু ফর্ম /regex/.test(str)এমনকি এই নির্দিষ্ট ক্ষেত্রে জন্য ভাল, প্রতি stackoverflow.com/questions/10940137/...
CrazyPyro

এটি মেলে স্ট্রিংটি ফিরিয়ে আনবে তবে বুলেয়ানের মান নয়।
রাজকুমার সমালা

var isUnavailable = $("#StatusId option:selected").text().match("^Unavailable - ");- নির্বাচিত বিকল্পটি "অনুপলব্ধ - অন্যান্য" থাকাকালীন কেন এই প্রত্যাবর্তনটি বাতিল হবে?
egmfrs

96

আরম্ভের জন্য, আপনি সূচিপত্র ব্যবহার করতে পারেন:

if(str.indexOf('Hello') == 0) {

...

সুত্র

এবং আপনি 'শেষ' সঙ্গে নির্ধারণ করতে স্ট্রিং দৈর্ঘ্যের উপর ভিত্তি করে গণিত করতে পারেন।

if(str.lastIndexOf('Hello') == str.length - 'Hello'.length) {

11
আপনি lastIndexOf()শেষগুলির সাথে ব্যবহার করতে পারেন ;)
রিগেল

সাবধান, ইন্ডেক্সঅফ আইই 8 ব্রাউজারে সমর্থিত নয়। সর্বশেষতম সূচিপত্রের সাথে একই।
পেড্রো লোপস

1
আমি বিভ্রান্তির জন্য ক্ষমাপ্রার্থী। আমি অ্যারে.প্রোটোটাইপ.ইন্ডেক্সফ () উল্লেখ করছিলাম যা কেবল আইই 9 + এর জন্য সমর্থিত এবং স্ট্রিং.প্রোটোটাইপ.ইন্ডেক্সফ () নয় আইই 4 +
পেড্রো লোপস

3
এই জাতীয় ব্যবহারের ক্ষেত্রে নিয়মিত প্রকাশের চেয়ে অনেক বেশি নিরাপদ উত্তর। সম্ভবত উত্তর গ্রহণ করা উচিত।
অ্যান্টন চ্যানিং

1
'এন্ডসইথ' এর কোডটি ত্রুটিযুক্ত। কোনও স্ট্রিং যাচাই করার সময় যা স্ট্রিংয়ে উপস্থিত হয় না এবং এর দৈর্ঘ্য = (শব্দ - 1) থাকে। E. g। ("1234".lastIndexOf('Hello') == "1234".length - 'Hello'.length)সত্য সত্য।
নিক রাশলার

23

এটি করার জন্য জিকুয়ের কোনও দরকার নেই। আপনি একটি jQuery মোড়কে কোড করতে পারেন তবে এটি অকেজো হবে যাতে আপনার আরও ভাল ব্যবহার করা উচিত

var str = "Hello World";

window.alert("Starts with Hello ? " + /^Hello/i.test(str));        

window.alert("Ends with Hello ? " + /Hello$/i.test(str));

ম্যাচ পদ্ধতিটি হ্রাস করা হিসাবে।

PS: RegExp এর "i" পতাকাটি alচ্ছিক এবং এটি সংবেদনশীল হিসাবে দাঁড়ায় (তাই এটি "হ্যালো", "হেলো" ইত্যাদির ক্ষেত্রেও সত্য ফিরে আসবে)।


2
অবচয় অনুসারে ম্যাচে ডকুমেন্টেশনের লিঙ্ক সরবরাহ করতে পারেন ()? একটি দ্রুত গুগল অনুসন্ধান কোনও কিছুই ফেরায় না return
কেভেন ভনডেলেন

1
কয়েক বছর আগে আমি অনলাইনে পড়েছি, আমি ভয় করি যে আমি ঠিক কোথায় খুঁজে পাচ্ছি না।
সেবাস্তিয়ান পি।

16

এই জাতীয় কাজের জন্য আপনার সত্যিই jQuery প্রয়োজন নেই। ES6 স্পেসিফিকেশনে তাদের ইতিমধ্যে বাক্সের পদ্ধতিগুলি শুরু হয়েছে যার সাথে শেষ এবং উইথ রয়েছে

var str = "To be, or not to be, that is the question.";
alert(str.startsWith("To be"));         // true
alert(str.startsWith("not to be"));     // false
alert(str.startsWith("not to be", 10)); // true

var str = "To be, or not to be, that is the question.";
alert( str.endsWith("question.") );  // true
alert( str.endsWith("to be") );      // false
alert( str.endsWith("to be", 19) );  // true

বর্তমানে এফএফ এবং ক্রোমে উপলব্ধ । পুরানো ব্রাউজারগুলির জন্য আপনি তাদের পলিফিল বা সাবস্ট্রাস্ট ব্যবহার করতে পারেন


10

আপনি সর্বদা Stringএই জাতীয় প্রোটোটাইপ প্রসারিত করতে পারেন :

//  Checks that string starts with the specific string
if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function (str) {
        return this.slice(0, str.length) == str;
    };
}

//  Checks that string ends with the specific string...
if (typeof String.prototype.endsWith != 'function') {
    String.prototype.endsWith = function (str) {
        return this.slice(-str.length) == str;
    };
}

এবং এটি এর মতো ব্যবহার করুন:

var str = 'Hello World';

if( str.startsWith('Hello') ) {
   // your string starts with 'Hello'
}

if( str.endsWith('World') ) {
   // your string ends with 'World'
}

2

ES6 এখন s এর শুরু এবং শেষ পরীক্ষা করার জন্য startsWith()এবং endsWith()পদ্ধতি সমর্থন করে string। আপনি যদি প্রাক-এস 6 ইঞ্জিনগুলিকে সমর্থন করতে চান তবে আপনি প্রস্তাবিত পদ্ধতির একটি Stringপ্রোটোটাইপে যুক্ত করার কথা বিবেচনা করতে পারেন ।

if (typeof String.prototype.startsWith != 'function') {
  String.prototype.startsWith = function (str) {
    return this.match(new RegExp("^" + str));
  };
}

if (typeof String.prototype.endsWith != 'function') {
  String.prototype.endsWith = function (str) {
    return this.match(new RegExp(str + "$"));
  };
}

var str = "foobar is not barfoo";
console.log(str.startsWith("foob"); // true
console.log(str.endsWith("rfoo");   // true

একটি রেজিজেসে (উদাহরণস্বরূপ ()[].) ব্যবহারের জন্য অক্ষর রয়েছে এমন অক্ষরগুলি যেগুলি পালাতে হবে সেগুলি আপনার পলিফিল পদ্ধতিগুলি ভেঙে দেবে। আপনাকে একটি রেজেক্স-এস্কেপ ফাংশন দিয়ে স্ট্রিং প্রস্তুত করতে হবে। বা আরও ভাল: core-js
নিরজুল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.