जावास्क्रिप्ट में समाप्त होता है


1103

यदि कोई स्ट्रिंग जावास्क्रिप्ट में किसी विशेष वर्ण के साथ समाप्त होती है, तो मैं कैसे जांच सकता हूं?

उदाहरण: मेरे पास एक स्ट्रिंग है

var str = "mystring#";

मैं जानना चाहता हूं कि क्या वह तार खत्म हो रहा है #। मैं इसकी जांच कैसे कर सकता हूं?

  1. endsWith()जावास्क्रिप्ट में एक विधि है?

  2. मेरे पास एक समाधान स्ट्रिंग की लंबाई है और अंतिम चरित्र प्राप्त करें और इसे जांचें।

क्या यह सबसे अच्छा तरीका है या कोई और तरीका है?


5
यह एक संबंधित प्रश्न हो गया है: stackoverflow.com/questions/646628/javascript-startswith
Hamish Grubijan

जवाबों:


1764

अद्यतन (24 नवंबर, 2015):

यह उत्तर मूल रूप से वर्ष 2010 (SIX वर्ष पूर्व) में पोस्ट किया गया है, इसलिए कृपया इन व्यावहारिक टिप्पणियों पर ध्यान दें:

  • Shauna - Googlers के लिए अपडेट - ऐसा लगता है कि ECMA6 इस फ़ंक्शन को जोड़ता है। एमडीएन लेख भी एक पॉलीफ़िल दिखाता है। https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith

  • टीजे क्राउडर - आधुनिक ब्राउज़र पर सबस्ट्रिंग महंगा नहीं है; हो सकता है कि यह जवाब 2010 में आया हो। इन दिनों, सरल this.substr(-suffix.length) === suffixदृष्टिकोण क्रोम पर सबसे तेज़ है, IE11 पर इंडेक्सऑफ़ के समान है, और फ़ायरफ़ॉक्स पर केवल 4% धीमा (फ़ेरगेटाउटिट क्षेत्र): jsperf.com/endwith-stackoverflow/14 और परिणाम के गलत होने पर पूरे बोर्ड में तेज़ी से: jsperf.com/endswith-stackoverflow-when-false बेशक, ES6 के सिरों के साथ, बिंदु मूट है। :-)


मूल ANSWER:

मुझे पता है कि यह एक वर्ष पुराना प्रश्न है ... लेकिन मुझे इसकी भी आवश्यकता है और मुझे इसे क्रॉस-ब्राउज़र पर काम करने की आवश्यकता है ... सभी के उत्तर और टिप्पणियों को संयोजित करना और इसे थोड़ा सरल करना:

String.prototype.endsWith = function(suffix) {
    return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
  • एक सबस्ट्रिंग नहीं बनाता है
  • indexOfसबसे तेज़ परिणामों के लिए मूल फ़ंक्शन का उपयोग करता है
  • indexOfआगे निकलने के लिए दूसरे पैरामीटर का उपयोग करके अनावश्यक तुलना छोड़ें
  • इंटरनेट एक्सप्लोरर में काम करता है
  • सं Regex जटिलताओं

इसके अलावा, अगर आपको देशी डेटा संरचना के प्रोटोटाइप में चीजें भरना पसंद नहीं है, तो यहां एक स्टैंडअलोन संस्करण है:

function endsWith(str, suffix) {
    return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

संपादित करें: जैसा कि @hamish द्वारा टिप्पणियों में उल्लेख किया गया है, यदि आप सुरक्षित पक्ष पर गलती करना चाहते हैं और जांचें कि क्या कार्यान्वयन पहले ही प्रदान किया जा चुका है, तो आप बस इस typeofतरह एक चेक जोड़ सकते हैं :

if (typeof String.prototype.endsWith !== 'function') {
    String.prototype.endsWith = function(suffix) {
        return this.indexOf(suffix, this.length - suffix.length) !== -1;
    };
}

42
Googlers के लिए अपडेट - ऐसा लगता है कि ECMA6 इस फ़ंक्शन को जोड़ता है। एमडीएन लेख भी एक पॉलीफ़िल दिखाता है। developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Shauna

2
@ lukas.pukenis यह अंत तक जाता है और केवल बहुत अंत में प्रत्यय का एक उदाहरण जांचता है। इससे कोई फर्क नहीं पड़ता कि खोज स्ट्रिंग कहीं और दिखाई देती है या नहीं।
चक्रित

3
स्थिति के लिए एक जांच जोड़ना जब तर्क "प्रत्यय" परिभाषित नहीं होता है: "यदि (टाइपो String.prototyp.endWith! == 'function') {String.prototyp.endsWith = function (प्रत्यय) यह वापस करें ।indexOf (प्रत्यय) , इस.लगाव - ((प्रत्यय और & quot; प्रत्यय) || 0))! == -1;};};}
मंदीप

2
रेगेक्स की जटिलताओं का क्या उल्लेख है?
इडेडांटे

5
आधुनिक ब्राउज़र पर सबस्ट्रिंग महंगा नहीं है; हो सकता है कि यह जवाब 2010 में आया हो। इन दिनों, this.substr(-suffix.length) === suffixक्रोम पर सरल दृष्टिकोण सबसे तेज़ है, IE11 पर समान है indexOf, और फ़ायरफ़ॉक्स पर केवल 4% धीमा (फ़ेरगेटाउटिट क्षेत्र): jsperf.com/endwith-stackoverflow/14 और जब परिणाम गलत होता है, तो पूरे बोर्ड में तेजी: jsperf .com / endwith-stackoverflow-when-false बेशक, ES6 जोड़ने के साथ endsWith, बिंदु मूट है। :-)
टीजे क्राउडर

295
/#$/.test(str)

सभी ब्राउज़रों पर काम करेगा, बंदर पैबंद की आवश्यकता नहीं है String, और lastIndexOfजब कोई मैच नहीं होता है तो पूरे स्ट्रिंग को स्कैन करने की आवश्यकता नहीं होती है।

यदि आप एक निरंतर स्ट्रिंग से मेल खाना चाहते हैं जिसमें नियमित अभिव्यक्ति विशेष वर्ण हो सकते हैं, जैसे कि '$', तो आप निम्न का उपयोग कर सकते हैं:

function makeSuffixRegExp(suffix, caseInsensitive) {
  return new RegExp(
      String(suffix).replace(/[$%()*+.?\[\\\]{|}]/g, "\\$&") + "$",
      caseInsensitive ? "i" : "");
}

और फिर आप इसे इस तरह से उपयोग कर सकते हैं

makeSuffixRegExp("a[complicated]*suffix*").test(str)

10
यह अच्छा और सरल है यदि आप एक स्थिर विकल्प के लिए जाँच कर रहे हैं।
वारेन ब्लांचेट

1
lastIndexOf सभी स्ट्रिंग को स्कैन करता है? मुझे लगा कि यह अंत से लेकर भीख तक खोजेगा।
टॉम ब्रिटो

3
@TomBrito, lastIndexOfपूरे स्ट्रिंग को केवल तभी स्कैन करता है जब उसे कोई मेल नहीं मिलता है, या शुरुआत में एक मैच पाता है। यदि अंत में एक मैच है तो यह प्रत्यय की लंबाई के लिए आनुपातिक काम करता है। हाँ, /asdf$/.test(str)जब पैदावार सही strहोती है "asdf"
माइक सैमुअल

3
@ टॉम ब्रिटो, यह एक नियमित अभिव्यक्ति शाब्दिक है। वाक्यविन्यास पर्ल से उधार लिया गया है। देखें developer.mozilla.org/en/Core_JavaScript_1.5_Guide/... या विस्तार के एक अनावश्यक स्तर के लिए, ECMAScript भाषा विनिर्देश की धारा 7.8.5 देखें।
माइक सैमुअल

2
क्रॉस-ब्राउज़र संगतता के लिए +1। Chrome 28.0.1500.72 m, Firefox 22.0 और IE9 पर परीक्षण किया गया।
एड्रियन बन

91
  1. दुर्भाग्य से नहीं।
  2. if( "mystring#".substr(-1) === "#" ) {}

14
@ एंथनी, उम ... तो उपयोग करें ।Length -1, क्या समस्या है? if (mysteryring.substr (mystring.length -1) === "#") {} IE में ठीक काम करता है।
BrainSlugs83

12
@ BrainSlugs83 - यह वास्तव में समस्या है: '.length -1' सिंटैक्स IE में काम करता है, और '-1' सिंटैक्स नहीं करता है। यह कुछ को ध्यान में रखना है, इसलिए टिप के लिए एंथोनी को +1।
अवरामोव

2
क्या आप उपयोग नहीं कर सकते slice()? यह मेरे त्वरित IE7 परीक्षण में मेरे लिए काम करता है।
एलेक्स

फ्रिक आईई। यह कब मरेगा?
अहानजकद

67

चलो, यह सही endsWithकार्यान्वयन है:

String.prototype.endsWith = function (s) {
  return this.length >= s.length && this.substr(this.length - s.length) == s;
}

lastIndexOfयदि कोई मेल न हो तो सिर्फ अनावश्यक सीपीयू लूप का उपयोग करना ।


2
माना। मैं वास्तव में ऐसा महसूस करता हूं कि यह सबसे अच्छा प्रदर्शन करने वाला समाधान है क्योंकि इसकी शुरुआती गर्भपात / पवित्रता की जाँच है, यह संक्षिप्त और संक्षिप्त है, यह सुरुचिपूर्ण है (स्ट्रिंग प्रोटोटाइप को ओवरलोड कर रहा है) और सबस्ट्रिंग ऐसा लगता है जैसे रेगेक्स इंजन को स्पिन करने की तुलना में बहुत कम संसाधन हिट है।
ब्रेनस्ल्गस83

इस उपाय को भी पसंद करें। बस फ़ंक्शन का नाम गलत है। "एंडविथ" होना चाहिए।
xmedeko

3
@ BrainSlugs83 यह कुछ वर्षों से है, लेकिन अब यह विधि चक्री द्वारा उल्लिखित 'indexOf' विधि से अधिक तेज़ नहीं है, और सफारी के तहत, यह 30% धीमी है! यहाँ लगभग 50-वर्ण स्ट्रिंग में विफलता के मामले के लिए एक jsPerf परीक्षण है: jsperf.com/endswithcomparison
Brent Faust

4
शायद उपयोग करना चाहिए ===
टिम्मम्म

56

यह संस्करण एक विकल्प बनाने से बचता है, और नियमित अभिव्यक्तियों का उपयोग नहीं करता है (यहां कुछ रेगेक्स उत्तर काम करेंगे; दूसरों को तोड़ दिया जाता है):

String.prototype.endsWith = function(str)
{
    var lastIndex = this.lastIndexOf(str);
    return (lastIndex !== -1) && (lastIndex + str.length === this.length);
}

यदि प्रदर्शन आपके लिए महत्वपूर्ण है, तो यह परीक्षण के लायक होगा कि क्या lastIndexOfवास्तव में एक विकल्प बनाने या नहीं बनाने की तुलना में तेज़ है। (यह अच्छी तरह से आपके द्वारा उपयोग किए जा रहे JS इंजन पर निर्भर हो सकता है ...) यह मिलान के मामले में अच्छी तरह से तेज़ हो सकता है, और जब स्ट्रिंग छोटा होता है - लेकिन जब स्ट्रिंग विशाल होती है तो उसे पूरी चीज़ के माध्यम से वापस देखने की आवश्यकता होती है हालांकि हम वास्तव में परवाह नहीं करते हैं :(

किसी एक वर्ण की जाँच के लिए, लंबाई का पता लगाना और फिर उपयोग charAtकरना शायद सबसे अच्छा तरीका है।


2
यदि यह .lastIndexOf () -1 देता है, तो आप ऐसे मामलों को हिट कर सकते हैं जहां यह इस पर सही निर्भरता लौटाता है। एक परीक्षण जोड़ें जो lastIndexOf ()! = -1 है।
इब्रुखेज़

1
रेगेक्स पद्धति क्यों टूटी है?
izb

2
@izb: उत्तर जो मेरे से पुराने हैं जो str+"$"रेगेक्स के रूप में उपयोग करने की कोशिश करते हैं, वे टूट जाते हैं, क्योंकि वे मान्य रेक्सक्स नहीं हो सकते हैं।
जॉन स्कीट

26

sliceविधि के साथ apporach नहीं देखा था । तो मैं इसे यहाँ छोड़ रहा हूँ:

function endsWith(str, suffix) {
    return str.slice(-suffix.length) === suffix
}

1
आप इसे थोड़ा और सरल कर सकते हैं: वापसी str.slice (-1) === प्रत्यय;
एरिक के।

2
यह सबसे अच्छा जवाब है। यकीन नहीं है कि यह अधिक upvotes क्यों नहीं है।
न्यूक्लियराइड जूल

17
return this.lastIndexOf(str) + str.length == this.length;

उस मामले में काम नहीं करता है जहां मूल स्ट्रिंग की लंबाई खोज स्ट्रिंग लंबाई से कम है और खोज स्ट्रिंग नहीं मिली है:

lastIndexOf -1 देता है, फिर आप खोज स्ट्रिंग लंबाई जोड़ते हैं और आपको मूल स्ट्रिंग की लंबाई के साथ छोड़ दिया जाता है।

एक संभावित फिक्स है

return this.length >= str.length && this.lastIndexOf(str) + str.length == this.length

30
आपने "जॉन स्कीट उत्तर में एक गलती पाई" बैज अर्जित किया है। विवरण के लिए अपनी प्रोफ़ाइल देखें।
बोबिन्स 16

17

Developer.mozilla.org से String.prototype.endsWith ()

सारांश

endsWith()विधि निर्धारित करता है कि एक और स्ट्रिंग, सच है या उचित रूप में झूठी लौटने का पात्रों के साथ एक स्ट्रिंग समाप्त हो जाती है।

वाक्य - विन्यास

str.endsWith(searchString [, position]);

पैरामीटर

  • searchString : इस स्ट्रिंग के अंत में खोजे जाने वाले अक्षर।

  • स्थिति : इस स्ट्रिंग के भीतर खोजें जैसे कि यह स्ट्रिंग केवल इतनी लंबी थी; इस स्ट्रिंग की वास्तविक लंबाई की चूक, इस स्ट्रिंग की लंबाई द्वारा स्थापित सीमा के भीतर जकड़ी हुई है।

विवरण

यह विधि आपको यह निर्धारित करने देती है कि क्या एक स्ट्रिंग दूसरे स्ट्रिंग के साथ समाप्त होती है या नहीं।

उदाहरण

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

विशेष विवरण

ECMAScript भाषा विशिष्टता 6 वाँ संस्करण (ECMA-262)

ब्राउज़र संगतता

ब्राउज़र संगतता



8
String.prototype.endsWith = function(str) 
{return (this.match(str+"$")==str)}

String.prototype.startsWith = function(str) 
{return (this.match("^"+str)==str)}

आशा है कि ये आपकी मदद करेगा

var myStr =   Earth is a beautiful planet  ”;
var myStr2 = myStr.trim();  
//==“Earth is a beautiful planet”;

if (myStr2.startsWith(“Earth”)) // returns TRUE

if (myStr2.endsWith(“planet”)) // returns TRUE

if (myStr.startsWith(“Earth”)) 
// returns FALSE due to the leading spaces…

if (myStr.endsWith(“planet”)) 
// returns FALSE due to trailing spaces…

पारंपरिक तरीका है

function strStartsWith(str, prefix) {
    return str.indexOf(prefix) === 0;
}

function strEndsWith(str, suffix) {
    return str.match(suffix+"$")==suffix;
}

आपको रेगेक्स एस्केप सीक्वेंस के लिए अपनी स्ट्रिंग से बचना होगा
जुआन मेंडेस

1
तेज भाषाओं में भी नियमित अभिव्यक्ति धीमी है। बस एक स्ट्रिंग के अंत की जाँच करें।
डैनियल नुरियेव

8

मैं आपके बारे में नहीं जानता, लेकिन:

var s = "mystring#";
s.length >= 1 && s[s.length - 1] == '#'; // will do the thing!

नियमित अभिव्यक्ति क्यों? प्रोटोटाइप के साथ खिलवाड़ क्यों? substr? चलो ...


'कभी-कभी यह बेहतर होता है जब यह WET
मार्टिन कैपोडिसी

8

केवल एक और त्वरित विकल्प जो रेगेक्स का उपयोग करके मेरे लिए एक आकर्षण की तरह काम करता है:

// Would be equivalent to:
// "Hello World!".endsWith("World!")
"Hello World!".match("World!$") != null


6

मैंने अभी इस स्ट्रिंग लाइब्रेरी के बारे में सीखा है:

http://stringjs.com/

Js फ़ाइल शामिल करें और फिर Sइस तरह चर का उपयोग करें:

S('hi there').endsWith('hi there')

इसे स्थापित करके NodeJS में भी इसका उपयोग किया जा सकता है:

npm install string

फिर इसे Sचर के रूप में आवश्यकता होती है :

var S = require('string');

वेब पेज में वैकल्पिक स्ट्रिंग लाइब्रेरीज़ के लिंक भी हैं, अगर यह आपके फैंस को नहीं भाता है।


4
function strEndsWith(str,suffix) {
  var reguex= new RegExp(suffix+'$');

  if (str.match(reguex)!=null)
      return true;

  return false;
}

1
यदि आप समझाते हैं कि आपका कोड समस्या का हल क्यों करता है तो बेहतर है। गाइड देखें कि कैसे जवाब दें
ब्रासोफिलो

प्रत्यय तर्क को regex अभिव्यक्तियों के लिए स्कैन किया जाना चाहिए जिन्हें बचाना है। IndexOf या lastIndexOf का उपयोग करना एक बेहतर विकल्प लगता है।
vlad_tepesch

यदि प्रत्यय में इनमें से कोई भी वर्ण नहीं है तो यह काम नहीं करेगा:। * +? ^ = !: $ {} () [] / \
gtournie

4

इतनी छोटी सी समस्या के लिए बहुत सी चीजें, बस इस रेगुलर एक्सप्रेशन का उपयोग करें

var str = "mystring#";
var regex = /^.*#$/

if (regex.test(str)){
  //if it has a trailing '#'
}


4

इस सवाल के कई साल हो गए हैं। मुझे उन उपयोगकर्ताओं के लिए एक महत्वपूर्ण अपडेट जोड़ने की अनुमति देता हूं जो सबसे अधिक वोट किए गए चक्रित के उत्तर का उपयोग करना चाहते हैं।

ECMAScript 6 (प्रायोगिक प्रौद्योगिकी) के हिस्से के रूप में 'एंड्सविथ' फ़ंक्शन पहले ही जावास्क्रिप्ट में जोड़ दिए गए हैं

इसे यहाँ देखें: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith

इसलिए उत्तर में उल्लिखित मूल कार्यान्वयन के अस्तित्व के लिए चेक जोड़ने की अत्यधिक अनुशंसा की जाती है।


2
function check(str)
{
    var lastIndex = str.lastIndexOf('/');
    return (lastIndex != -1) && (lastIndex  == (str.length - 1));
}

2

भविष्य के सबूत और / या मौजूदा प्रोटोटाइप के ओवरराइटिंग को रोकने का एक तरीका यह देखने के लिए परीक्षण जांच होगा कि क्या इसे पहले से ही प्रोटोटाइप प्रोटोटाइप में जोड़ दिया गया है। यहाँ मेरा नॉन-रेगेक्स अत्यधिक रेटेड संस्करण पर है।

if (typeof String.endsWith !== 'function') {
    String.prototype.endsWith = function (suffix) {
        return this.indexOf(suffix, this.length - suffix.length) !== -1;
    };
}

का उपयोग करना if (!String.prototype.hasOwnProperty("endsWith"))सबसे अच्छा तरीका है। साथ typeof, "MooTools और अन्य AJAX पुस्तकालयों में से कुछ तुम पेंच होगा", "जावास्क्रिप्ट पर Crockford - लेवल 7 नई हिस्से:: ECMAScript 5" के अनुसार, 15:50 मिनट पर।
XP1

2

@ चक्रित का स्वीकृत उत्तर स्वयं ऐसा करने का एक ठोस तरीका है। यदि, हालांकि, आप एक पैकेज्ड समाधान की तलाश में हैं, तो मैं @ अंडरकॉइन के अनुसार, अंडरस्कोर.स्ट्रिंग पर एक नज़र डालने की सलाह देता हूं । अंडरस्कोर.स्ट्रिंग का उपयोग करते हुए, कोड होगा:

function endsWithHash(str) {
  return _.str.endsWith(str, '#');
}

1

यदि आप LasIndexOf या मूल का उपयोग नहीं करना चाहते हैं, तो क्यों न इसकी प्राकृतिक अवस्था (यानी एक सरणी) में स्ट्रिंग देखें।

String.prototype.endsWith = function(suffix) {
    if (this[this.length - 1] == suffix) return true;
    return false;
}

या एक स्टैंडअलोन फ़ंक्शन के रूप में

function strEndsWith(str,suffix) {
    if (str[str.length - 1] == suffix) return true;
    return false;
}

1
String.prototype.endWith = function (a) {
    var isExp = a.constructor.name === "RegExp",
    val = this;
    if (isExp === false) {
        a = escape(a);
        val = escape(val);
    } else
        a = a.toString().replace(/(^\/)|(\/$)/g, "");
    return eval("/" + a + "$/.test(val)");
}

// example
var str = "Hello";
alert(str.endWith("lo"));
alert(str.endWith(/l(o|a)/));

1

जवाब के उन सभी लंबे मिलान के बाद, मुझे यह कोड सरल और समझने में आसान लगा!

function end(str, target) {
  return str.substr(-target.length) == target;
}

1

यह सिरों का कार्यान्वयन है: String.prototype.endsWith = function (str) { return this.length >= str.length && this.substr(this.length - str.length) == str; }


1

यह कार्यान्वयन है endsWith:

String.prototype.endsWith = function (str) {
  return (this.length >= str.length) && (this.substr(this.length - str.length) === str);
}

0

यह @ charkit के स्वीकृत उत्तर पर बनाता है जिससे या तो एक ऐरे की स्ट्रिंग या एक तर्क के रूप में पारित होने की अनुमति मिलती है।

if (typeof String.prototype.endsWith === 'undefined') {
    String.prototype.endsWith = function(suffix) {
        if (typeof suffix === 'String') {
            return this.indexOf(suffix, this.length - suffix.length) !== -1;
        }else if(suffix instanceof Array){
            return _.find(suffix, function(value){
                console.log(value, (this.indexOf(value, this.length - value.length) !== -1));
                return this.indexOf(value, this.length - value.length) !== -1;
            }, this);
        }
    };
}

इसके लिए अंडरस्कोरज की आवश्यकता होती है - लेकिन शायद अंडरस्कोर निर्भरता को हटाने के लिए इसे समायोजित किया जा सकता है।


1
यह एक बुरा समाधान है, बल्कि यदि आप पहले से ही अंडरस्कोर का उपयोग कर रहे हैं, तो आपको अपनी निर्भरता में इस epeli.github.io/underscore.string को जोड़ना चाहिए और उनके कार्यान्वयन का उपयोग करना चाहिए :_.str.endsWith
mlunoe

0
if(typeof String.prototype.endsWith !== "function") {
    /**
     * String.prototype.endsWith
     * Check if given string locate at the end of current string
     * @param {string} substring substring to locate in the current string.
     * @param {number=} position end the endsWith check at that position
     * @return {boolean}
     *
     * @edition ECMA-262 6th Edition, 15.5.4.23
     */
    String.prototype.endsWith = function(substring, position) {
        substring = String(substring);

        var subLen = substring.length | 0;

        if( !subLen )return true;//Empty string

        var strLen = this.length;

        if( position === void 0 )position = strLen;
        else position = position | 0;

        if( position < 1 )return false;

        var fromIndex = (strLen < position ? strLen : position) - subLen;

        return (fromIndex >= 0 || subLen === -fromIndex)
            && (
                position === 0
                // if position not at the and of the string, we can optimise search substring
                //  by checking first symbol of substring exists in search position in current string
                || this.charCodeAt(fromIndex) === substring.charCodeAt(0)//fast false
            )
            && this.indexOf(substring, fromIndex) === fromIndex
        ;
    };
}

लाभ:

  • यह संस्करण सिर्फ इंडेक्सऑफ का पुन: उपयोग नहीं कर रहा है।
  • लंबे स्ट्रिंग्स पर सबसे शानदार प्रदर्शन। यहाँ एक गति परीक्षण है http://jsperf.com/starts-ends-with/4
  • पारिस्थितिकीय विनिर्देश के साथ पूरी तरह से संगत। यह परीक्षणों को पास करता है

0

नियमित अभिव्यक्ति का उपयोग न करें। वे तेज भाषाओं में भी धीमी हैं। बस एक फ़ंक्शन लिखें जो एक स्ट्रिंग के अंत की जांच करता है। इस पुस्तकालय के अच्छे उदाहरण हैं: ग्राउंडज / यूसेजजेएस । String.prototype के लिए एक फ़ंक्शन जोड़ने से सावधान रहें। इस कोड में यह कैसे करना है के अच्छे उदाहरण हैं: ग्राउंडज / प्रोटोटाइप . js सामान्य रूप से, यह एक अच्छी भाषा-स्तरीय लाइब्रेरी है: ग्राउंडज आप लॉश पर भी नज़र डाल सकते हैं


0

वे सभी बहुत उपयोगी उदाहरण हैं। जोड़ने String.prototype.endsWith = function(str)से हमें यह जांचने में मदद मिलेगी कि क्या हमारी स्ट्रिंग इसके साथ समाप्त होती है या नहीं, यह जांचने के लिए विधि अच्छी तरह से कॉल करेगी।

मुझे खदान से बेहतर समाधान मिला। सभी को धन्यवाद।


0

कॉफ़्सस्क्रिप्ट के लिए

String::endsWith = (suffix) ->
  -1 != @indexOf suffix, @length - suffix.length
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.