निम्नलिखित तकनीक (या समान) आमतौर पर जावास्क्रिप्ट में एक स्ट्रिंग को उल्टा करने के लिए किया जाता है:
// Don’t use this!
var naiveReverse = function(string) {
return string.split('').reverse().join('');
}
वास्तव में, अब तक पोस्ट किए गए सभी उत्तर इस पैटर्न की भिन्नता हैं। हालांकि, इस समाधान के साथ कुछ समस्याएं हैं। उदाहरण के लिए:
naiveReverse('foo bar');
// → 'rab �� oof'
// Where did the `` symbol go? Whoops!
आप सोच रहे हैं कि ऐसा क्यों होता है, read up on JavaScript’s internal character encoding।
: (टी एल डॉ।
एक सूक्ष्म प्रतीक है, और जावास्क्रिप्ट दो अलग-अलग कोड इकाइयों के रूप में यह उजागर करता है) लेकिन वहाँ और भी है:
// To see which symbols are being used here, check:
// http://mothereff.in/js-escapes#1ma%C3%B1ana%20man%CC%83ana
naiveReverse('mañana mañana');
// → 'anãnam anañam'
// Wait, so now the tilde is applied to the `a` instead of the `n`? WAT.
एक अच्छा स्ट्रिंग स्ट्रिंग रिवर्स कार्यान्वयन का परीक्षण करने के the following है:
'foo bar mañana mañana'
क्यों? क्योंकि इसमें एक सूक्ष्म प्रतीक (
) (जो represented by surrogate pairs in JavaScript हैं) और एक संयोजन चिह्न (ñ
अंतिम mañana
में वास्तव में दो प्रतीकों होते हैं: यू +006 ई लैटिन लघु पत्र एन और यू +0303 संयोजन टिल्ड)।
जिस क्रम में सरोगेट जोड़े दिखाई देते हैं उसे उलट नहीं किया जा सकता है, अन्यथा अस्थिर प्रतीक 'उलटा' स्ट्रिंग में और दिखाई नहीं देगा। यही कारण है कि आपने पिछले उदाहरण के लिए आउटपुट में उन ��
अंकों को देखा था।
संयोजन अंक हमेशा पिछले प्रतीक पर लागू होते हैं, इसलिए आपको मुख्य प्रतीक (यू +006 ई लैटिन लघु पत्र एन) दोनों को संयोजन चिह्न (यू +0303 संयोजन टिल्ड) के रूप में पूरी तरह से इलाज करना होगा। उनके आदेश को उलट करने से संयोजन चिह्न को स्ट्रिंग में किसी अन्य प्रतीक के साथ जोड़ा जाएगा। यही कारण है कि उदाहरण आउटपुट ñ
के बजाय ã
था।
उम्मीद है कि यह अब तक पोस्ट किए गए सभी उत्तरों गलत हैं।
अपने प्रारंभिक सवाल का जवाब करने के लिए - कैसे [ठीक से] एक स्ट्रिंग जावास्क्रिप्ट में रिवर्स -, मैं एक छोटे से JavaScript लाइब्रेरी कि यूनिकोड-अवगत स्ट्रिंग उलट करने में सक्षम है लिखा है। इसमें अभी तक कोई भी समस्या नहीं है जिसका मैंने अभी उल्लेख किया है। पुस्तकालय को Esrever कहा जाता है; इसका कोड गिटहब पर है, और यह किसी भी जावास्क्रिप्ट पर्यावरण में बहुत अधिक काम करता है। यह एक खोल उपयोगिता/बाइनरी के साथ आता है, ताकि आप चाहें तो आसानी से अपने टर्मिनल से तारों को उलट सकते हैं।
var input = 'foo bar mañana mañana';
esrever.reverse(input);
// → 'anañam anañam rab oof'
_ "अन्य सभी सरणी विधियां" _ - '.sort()' काम करता है? काम करने वाले लोगों के लिए, क्या वे सभी ब्राउज़रों में काम करते हैं? (मुझे लगता है कि वे पुराने ब्राउज़रों के लिए असफल हो जाएंगे जिन्होंने तारों के लिए सरणी शैली '[] 'इंडेक्स नोटेशन लागू नहीं किया है, हालांकि मैंने इसका परीक्षण नहीं किया है।) – nnnnnn
@nnnnnn सॉर्ट उसी कारण से काम नहीं करता है – Hai
@ हैई: एफवाईआई, '.plice()' वास्तव में काम नहीं करता है। क्रोम आपको लौटा मूल्य देने के लिए बहुत दयालु है, लेकिन यदि आप इसे विभाजित करने से पहले मूल स्ट्रिंग का संदर्भ देते हैं, तो आप पाएंगे कि यह संशोधित नहीं है। –