कैसे एक स्ट्रिंग के अंतिम चरित्र पाने के लिए?


526

स्ट्रिंग का अंतिम वर्ण कैसे प्राप्त करें:

"linto.yahoo.com."

इस तार का अंतिम वर्ण है "."

मुझे यह कैसे मिल सकता है?


क्या आप इस उत्तर को स्वीकार कर सकते हैं , क्योंकि यह सबसे अच्छा है और इसे पहले प्रदर्शित किया जाना चाहिए।
शार्क 28

जवाबों:


995

एक सुरुचिपूर्ण और संक्षिप्त विकल्प, String.prototype.sliceविधि है।

बस से:

str.slice(-1);

एक नकारात्मक स्टार्ट इंडेक्स स्ट्रिंग को स्लाइस करता length+indexहै length, इंडेक्स होने के नाते -1, अंतिम वर्ण निकाला जाता है:

"abc".slice(-1); // "c";

9
साइड नोट: सरणियों में एक slice()विधि भी है । - उनकी कार्यक्षमता वैचारिक रूप से समान है (आंशिक प्रतियां) -------- (यदि आप कोड पढ़ रहे हैं और देखें तो .slice())
पीटर अज़ताई

1
"UTF-8 स्ट्रिंग" से आपका क्या अभिप्राय है? वाक्यांश का कोई मतलब नहीं है। FWIW हालांकि, जावास्क्रिप्ट स्ट्रिंग्स खुद अजीब जानवर हैं: वे अहस्ताक्षरित 16-बिट पूर्णांक मानों के अनुक्रम हैं। यदि आपकी स्ट्रिंग का इरादा पात्रों को संग्रहीत करना है, तो ऊपर दिया गया कोड अंतिम 16-बिट मान लौटाता है, जो कि सरोगेट जोड़ी का दूसरा भाग होता तो बहुत अच्छा नहीं होता। लेकिन फिर, "UTF-8 स्ट्रिंग" से आपका वास्तव में क्या मतलब है? UTF-8 एक एन्कोडिंग योजना है जो बाइट सरणी होने पर आपके लिए समझ में आ सकती है, लेकिन इसका मतलब यह है कि जब तार की बात आती है तो यह बिल्कुल भी नहीं है। बस उत्सुक।
रे तोल

4
डाउनवोट किया गया क्योंकि यह प्रश्न का उत्तर नहीं देता है। यह मानता है कि उपयोगकर्ता केवल चरित्र को हटाना चाहता है, लेकिन क्या होगा यदि आपको अंतिम चरित्र पर कब्जा करने और इसके आधार पर प्रतिक्रिया करने की आवश्यकता है? Str.charAt () उत्तर सही हैं।
gregtczap

6
@ फिर, लगता है कि आपने मेरे उदाहरण की कोशिश नहीं की, str.slice(-1)वास्तव में स्ट्रिंग के अंतिम चरित्र को प्राप्त करता है (जैसा कि ओपी आवश्यक है), जैसे कि आपने उपयोग किया था str.charAt(str.length - 1), कोशिश करें "abc".slice(-1):। मैं यहाँ String.prototype.sliceएक नकारात्मक सूचकांक के साथ उपयोग दिखा रहा था । नए स्ट्रिंग मान के रूप में मूल स्ट्रिंग str.slice(-n)के अंतिम nवर्ण प्राप्त करेंगे। अधिक जानकारी: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CMS

9
@ सीएमएस आप सही हैं, आपकी विधि वास्तव में इसे ट्रिम किए बिना स्ट्रिंग के अंतिम चार्ट को पकड़ती है। अच्छी सुरुचिपूर्ण विधि भी। किसी कारण से मैं सोच रहा था कि यह उन छंटों को ट्रिम करने और एक ट्रिम किए गए स्ट्रिंग को वापस करने के लिए जा रहा था। इसके बारे में क्षमा करें, मैं पहले इसे न आजमाने के लिए एक बेवकूफ की तरह महसूस करता हूं।
gregtczap

97

उपयोग करें charAt:

वर्ण () विधि एक स्ट्रिंग में निर्दिष्ट सूचकांक पर चरित्र लौटाती है।

आप lengthउस स्ट्रिंग में अंतिम वर्ण प्राप्त करने के लिए एक स्ट्रिंग की संपत्ति के साथ संयोजन में इस पद्धति का उपयोग कर सकते हैं ।
उदाहरण के लिए:

const myString = "linto.yahoo.com.";
const stringLength = myString.length; // this will be 16
console.log('lastChar: ', myString.charAt(stringLength - 1)); // this will be the string


63
str.charAt(str.length - 1)

कुछ ब्राउज़र आपको एक गैर-मानक एक्सटेंशन के रूप में अनुमति देते हैं:

str[str.length - 1];

50

आप इसे विभिन्न तरीकों का उपयोग करके प्राप्त कर सकते हैं, लेकिन विभिन्न प्रदर्शनों के साथ,

1. ब्रैकेट नोटेशन का उपयोग करना:

var str = "Test"; var lastLetter = str[str.length - 1];

लेकिन यह कोष्ठक का उपयोग करने के लिए अनुशंसित नहीं है। यहां कारणों की जांच करें

2. charAt [सूचकांक]:

var lastLetter = str.charAt(str.length - 1)

यह दूसरों के बीच पठनीय और सबसे तेज़ है। यह सबसे अनुशंसित तरीका है।

3. प्रतिस्थापन:

str.substring(str.length - 1);

4. टुकड़ा:

str.slice(-1);

यह विकल्प की तुलना में थोड़ा तेज है।

आप यहां प्रदर्शन की जांच कर सकते हैं

ES6 के साथ:

आप उपयोग कर सकते हैं str.endsWith("t");

लेकिन यह IE में समर्थित नहीं है। सिरों के बारे में अधिक जानकारी की जाँच करें


2
वर्तमान मशीनों पर प्रदर्शन निचोड़ने की आवश्यकता नहीं है। सबसे संक्षिप्त समाधान का उपयोग करें। मेरा वोट जारी हैstr.slice(-1);
हिमस्खलन 1

1
मुझे यकीन नहीं है कि endsWithयहाँ कैसे फिट बैठता है, जो कुछ अलग करता है।
जॉन मोंटगोमरी

38

पैरामीटर -1 के साथ रूट का उपयोग करें :

"Linto.yahoo.com।" Substr (-1)।

बराबर "।"

ध्यान दें:

स्ट्रिंग के अंत से वर्णों को निकालने के लिए, एक नकारात्मक प्रारंभ संख्या का उपयोग करें (यह IE 8 और पूर्व में काम नहीं करता है)।


3
ऐसा लगता है कि यह टुकड़ा जितना छोटा है (), मुझे आश्चर्य है कि एक बेहतर और तेज है।
stramin

12

यह करने का एक आसान तरीका यह प्रयोग कर रहा है :)

var word = "waffle"
word.endsWith("e")

1
अच्छा और सरल +1
जूलियन

1
वास्तव में ES6 के अलावा अच्छा है, लेकिन यह IE में काम नहीं करता है अगर आपको इसका समर्थन करना है, तो इसे पॉलीफ़िल किया जा सकता है ।
sanjsanj

मैं यह नहीं देखता कि यह किस तरह से सवाल का जवाब देता है, एक स्ट्रिंग का अंतिम चरित्र प्राप्त करना यह जांचने से पूरी तरह से अलग है कि क्या यह एक विशिष्ट चरित्र से मेल खाता है।
जॉन मोंटगोमरी


4

किसी दिए गए 0-अनुक्रमित स्थान पर एक वर्ण प्राप्त करने के लिए जावास्क्रिप्ट charAt फ़ंक्शन का उपयोग करें । स्ट्रिंग कितनी देर है यह जानने के लिए लंबाई का उपयोग करें । आप अंतिम चरित्र चाहते हैं ताकि लंबाई हो - 1. उदाहरण:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);

4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];

हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है। कृपया अपने कोड को व्याख्यात्मक टिप्पणियों के साथ भीड़ न दें, इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है!
kayess

0

आप इस सरल ES6 विधि का उपयोग कर सकते हैं

const lastChar = (str) => str.split('').reverse().join(',').replace(',', '')[str.length === str.length + 1 ? 1 : 0];


// example
console.log(lastChar("linto.yahoo.com."));

यह हर ब्राउज़र में काम करेगा।


0

आप निम्नलिखित का उपयोग कर सकते हैं। अंतिम चरित्र के इस मामले में यह एक ओवरकिल है, लेकिन एक विकल्प के लिए, इसका उपयोगी है:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");

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