मैं एक स्ट्रिंग के अंतिम अक्षर कैसे प्राप्त कर सकता हूं


736

मेरे पास है

var id="ctl03_Tabs1";

जावास्क्रिप्ट का उपयोग करते हुए, मुझे अंतिम पांच वर्ण या अंतिम चरित्र कैसे मिल सकता है?


6
अंतिम चरित्र प्राप्त करने के लिए सबसे अच्छा विकल्प id.charAt (id.length-1) होगा
दिलन जयतिलके

64
पाठकों को ध्यान दें: पहले उत्तर को पढ़ना सुनिश्चित करें, विशेष रूप से @Terence से।
ऑफिशो

जवाबों:


1085

संपादित करें: जैसा कि दूसरों ने बताया है, slice(-5)इसके बजाय उपयोग करें substrहालाँकि, .split().pop()दूसरे दृष्टिकोण के लिए इस उत्तर के निचले भाग पर समाधान देखें ।

मूल उत्तर:

आप संपत्ति के .substr()साथ संयुक्त जावास्क्रिप्ट स्ट्रिंग विधि का उपयोग करना चाहते .lengthहैं।

var id = "ctl03_Tabs1";
var lastFive = id.substr(id.length - 5); // => "Tabs1"
var lastChar = id.substr(id.length - 1); // => "1"

यह id.length - 5 से शुरू होने वाले वर्णों को प्राप्त होता है और चूंकि .substr () छोड़ा गया दूसरा तर्क, स्ट्रिंग के अंत तक जारी रहता है।

आप इस .slice()विधि का उपयोग भी कर सकते हैं क्योंकि अन्य ने नीचे बताया है।

यदि आप केवल अंडरस्कोर के बाद वर्ण ढूंढना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

var tabId = id.split("_").pop(); // => "Tabs1"

यह स्ट्रिंग को अंडरस्कोर पर एक ऐरे में विभाजित करता है और फिर एरे से अंतिम तत्व को "पॉप" करता है (जो स्ट्रिंग को आप चाहते हैं)।


5
पहला समाधान कम और तेज किया जा सकता है, नीचे मेरा जवाब देखें। हालांकि, मैं इस विशेष स्थिति में विभाजन और पॉप विचार से सहमत हूं।
टेरेंस

3
तुलना में (-5) .slice और .substr (लंबाई - 5) के लिए, .split().pop()एक बड़ा प्रदर्शन हिट है। यदि यह कुछ ऐसा है जिसे आप लूप में उपयोग कर रहे हैं और प्रदर्शन महत्वपूर्ण है, तो आप इसे ध्यान में रखना चाहेंगे।
nwayve

7
आपके परीक्षण में, .split().pop()अभी भी प्रति सेकंड 5 मिलियन ऑपरेशन हैं। यह एक प्रदर्शन समस्या नहीं है जब तक कि यह एक प्रदर्शन समस्या नहीं है। ;)
जैमोन होल्मग्रेन

1
@ हचमोर आप सही हैं। मैंने अपना उत्तर sliceइस बात का उल्लेख करने के लिए संपादित किया है कि इस बिंदु पर एक बेहतर विकल्प है।
जामुन होल्मग्रेन

1
आप लागू करने के लिए प्रयास कर रहे हैं sliceया substrएक संख्या (पूर्णांक) पर, पहली स्ट्रिंग के लिए परिवर्तित। जैसेmyVar.toString().slice(-5)
१०:०४ में

803

उपयोग न करें .substr().slice()इसके बजाय विधि का उपयोग करें क्योंकि यह क्रॉस ब्राउज़र संगत है (देखें IE)।

const id = "ctl03_Tabs1";
console.log(id.slice(id.length - 5)); //Outputs: Tabs1
console.log(id.slice(id.length - 1)); //Outputs: 1

IE में काम नहीं कर नकारात्मक मूल्य के साथ पदार्थ ()


6
हाँ टुकड़ा नकारात्मक मूल्यों को स्वीकार करता है जो महान है! slice()संदर्भ: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Offirmo

3
मैं इस जवाब को पसंद करता हूं, हालांकि स्वीकार किया गया काम ठीक है।
डेव वॉट्स

3
इसका उत्तर होना चाहिए, इस तरह से स्लाइस का उपयोग करना और भी अधिक अच्छा है: jsperf.com/slice-vs-substr-and-length
thevinchi

क्रोम 55 को लगता है कि
पदार्थ

6
मुझे लगता है कि स्लाइस केवल तभी काम करेगा जब इसके अनुरूप हो? अगर अंत होता तो क्या होता _Tabs15? टुकड़ा (-5) केवल हड़पने होगा abs15? विभाजन / पॉप विभिन्न लंबाई के लिए बेहतर काम करता है ...
ब्रायन रैमसे

65

आप अंतिम n वर्णों को पुनर्प्राप्त करने के लिए एक नकारात्मक प्रारंभिक स्थिति के साथ रूट () विधि का उपयोग कर सकते हैं । उदाहरण के लिए, यह अंतिम 5 मिलता है:

var lastFiveChars = id.substr(-5);

सबसे अच्छा और छोटा जवाब। मूल स्ट्रिंग की लंबाई (वर्तमान ब्राउज़रों के लिए, इसलिए हम IE को बाहर करने की आवश्यकता नहीं है) को जानने की आवश्यकता नहीं है
थान ट्रुंग

60

अंतिम चरित्र प्राप्त करना आसान है, क्योंकि आप स्ट्रिंग्स को एक सरणी के रूप में मान सकते हैं:

var lastChar = id[id.length - 1];

एक तार का एक खंड के लिए, आप उपयोग कर सकते हैं substr समारोह या सबस्ट्रिंग समारोह:

id.substr(id.length - 1); //get the last character
id.substr(2);             //get the characters from the 3rd character on
id.substr(2, 1);          //get the 3rd character
id.substr(2, 2);          //get the 3rd and 4th characters

के बीच का अंतर substrऔर substringकैसे दूसरे (वैकल्पिक) पैरामीटर व्यवहार किया जाता है है। इसमें substr, यह सूचकांक से वर्णों की मात्रा है (पहला पैरामीटर)। इसमें substring, यह सूचकांक है कि चरित्र का टुकड़ा कहाँ समाप्त होना चाहिए।


1
आपके पास एक टाइपो सुस्बर्स्ट होना चाहिए
जॉर्ज

24

निम्नलिखित स्क्रिप्ट जावास्क्रिप्ट का उपयोग करके एक स्ट्रिंग में अंतिम 5 वर्ण और अंतिम 1 वर्ण प्राप्त करने के लिए परिणाम दिखाता है:

var testword='ctl03_Tabs1';
var last5=testword.substr(-5); //Get 5 characters
var last1=testword.substr(-1); //Get 1 character

आउटपुट:

Tabs1 // 5 वर्ण मिले

1 // 1 पात्र मिला


4
आईई के साथ संगत नहीं, मेरा जवाब देखें।
टेरेंस


7

substrएक तार के एक एकल चार्ट प्राप्त करने के लिए विधि का उपयोग करने की कोई आवश्यकता नहीं है !

जैमोन होल्मग्रेन का उदाहरण लेते हुए हम पदार्थ विधि को बदल सकते हैं और केवल सरणी स्थिति निर्दिष्ट कर सकते हैं:

var id = "ctl03_Tabs1";
var lastChar = id[id.length - 1]; // => "1"

5

Substr फ़ंक्शन आपको अंतिम वर्ण प्राप्त करने के लिए माइनस का उपयोग करने की अनुमति देता है।

var string = "hello";
var last = string.substr(-1);

यह बहुत लचीला है। उदाहरण के लिए:

// Get 2 characters, 1 character from end
// The first part says how many characters
// to go back and the second says how many
// to go forward. If you don't say how many
// to go forward it will include everything
var string = "hello!";
var lasttwo = string.substr(-3,2);
// = "lo"

4

एक तरीका यह होगा slice, जैसे कि अनुसरण करें:

var id="ctl03_Tabs1";
var temp=id.slice(-5);

तो मान tempहोगा "Tabs1"


3

यदि आप केवल अंतिम चरित्र या किसी भी चरित्र को जानना चाहते हैं, तो आप एक स्ट्रिंग के रूप में स्ट्रिंग को ट्रेट कर सकते हैं! - जावास्क्रिप्ट में स्ट्रिंग्स इटरेटेबल हैं -

Var x = "hello_world";
 x[0];                    //h
 x[x.length-1];   //d

फिर भी यदि आपको सिर्फ एक चरित्र की आवश्यकता है तो स्प्लिस का उपयोग प्रभावी है

x.slice(-5);      //world

अपने उदाहरण के बारे में

"rating_element-<?php echo $id?>"

Id निकालने के लिए आप आसानी से विभाजन + पॉप का उपयोग कर सकते हैं

Id= inputId.split('rating_element-')[1];

यदि कोई आईडी 'Rating_element' के बाद नहीं थी, तो यह id, या अपरिभाषित वापस कर देगी :)


2

यह मानते हुए कि आप किसी अन्य स्ट्रिंग के अंत के खिलाफ सबस्ट्रिंग की तुलना करेंगे और एक बूलियन के रूप में परिणाम का उपयोग करेंगे ताकि आप इसे पूरा करने के लिए स्ट्रिंग वर्ग का विस्तार कर सकें:

String.prototype.endsWith = function (substring) {
  if(substring.length > this.length) return false;
  return this.substr(this.length - substring.length) === substring;
};

आपको निम्न कार्य करने की अनुमति देना:

var aSentenceToPonder = "This sentence ends with toad"; 
var frogString = "frog";
var toadString = "toad";
aSentenceToPonder.endsWith(frogString) // false
aSentenceToPonder.endsWith(toadString) // true

1
var id="ctl03_Tabs1";
var res = id.charAt(id.length-1);

मुझे यह सवाल मिला और कुछ शोधों के माध्यम से मैंने इसे अंतिम चरित्र प्राप्त करने का सबसे आसान तरीका पाया।

जैसा कि दूसरों ने अंतिम 5 प्राप्त करने के लिए पूर्णता का उल्लेख किया है और जोड़ा है:

var last5 = id.substr(-5);

0

यदि यह स्ट्रिंग में अंतिम वर्ण है तो यह कॉमा को हटा देगा।

var str = $("#ControlId").val();

if(str.substring(str.length-1)==',') {

  var stringWithoutLastComma = str.substring(0,str.length-1);    

}

4
मूल प्रश्न पर इसका कोई असर नहीं है।
सिलसज्मत्सन

0

मुझे वास्तव में निम्नलिखित समस्या है और मैंने इसे उपरोक्त उत्तर की मदद से हल किया है, लेकिन आईडी निकालने में भिन्न दृष्टिकोण एक इनपुट तत्व बनाता है।

मैंने संलग्न इनपुट ए के साथ दायर किया है

id="rating_element-<?php echo $id?>"

और, जब उस बटन पर क्लिक किया जाता है, तो मैं केवल आईडी (जो संख्या है) या php आईडी ($ id) निकालना चाहता हूं ।

तो यहाँ मैं क्या करूँ।

 $('.rating').on('rating.change', function() {
            alert($(this).val());
           // console.log(this.id);
           var static_id_text=("rating_element-").length;       
           var product_id =  this.id.slice(static_id_text);       //get the length in order to deduct from the whole string    
          console.log(product_id );//outputs the last id appended
        });

0

अंतिम 5

var id="ctl03_Tabs1";
var res = id.charAt(id.length-5)
alert(res);

अंतिम

   
 var id="ctl03_Tabs1";
 var res = id.charAt(id.length-1)
alert(res);


पहले उदाहरण के लिए, बदलने charAtके लिए substr। वह पाँचवाँ-अन्तिमcharAt हो जाता है ।
नियमित जो

-1

मुझे यकीन है कि यह काम करेगा ...।

var string1="myfile.pdf"
var esxtenion=string1.substr(string1.length-4)

का मान extensionहोगा".pdf"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.