चरस को स्ट्रिंग में कैसे बदलें?


जवाबों:


339

इसकी toString()विधि को लागू करके ।

इस क्रम में वर्णों से युक्त एक स्ट्रिंग को उसी क्रम में लौटाता है जो इस क्रम में है। स्ट्रिंग की लंबाई इस अनुक्रम की लंबाई होगी।


@ TheOnlyAnil, कॉलिंग setText(CharSequence)क्या आप की जरूरत नहीं है?
माइक शमूएल

मैं एक्शनबार टाइटल को क्लिक करने योग्य बनाना चाहता हूं।
TheOnlyAnil

@ TheOnlyAnil, शायद आपको यह सवाल पूछना चाहिए। मूर्त रूप से संबंधित प्रश्न के उत्तर पर टिप्पणियाँ आपकी आवश्यकताओं को आज़माने और चिढ़ाने के लिए एक अच्छी जगह नहीं हैं।
माइक सैमुअल

Stackoverflow मुझे कोई प्रश्न पोस्ट नहीं करने देगा। : / btw मैंने कल रात किया था। कस्टम एक्शनबार इसका हल है :)
TheOnlyAnil

1
@WillByers कि उत्पादन एक CharSequence सरणी के String की तरह दिखता है, एक CharSequence नहीं।
माइक सैमुअल

90

यहाँ एक सूक्ष्म मुद्दा है जो थोड़ा सा मिला है।

इस toString()पद्धति का आधार कार्यान्वयन है ObjectCharSequenceएक इंटरफ़ेस है; और यद्यपि यह toString()विधि उस इंटरफ़ेस के हिस्से के रूप में प्रकट होती है, लेकिन संकलन-समय पर ऐसा कुछ भी नहीं है जो आपको इसे ओवरराइड करने और अतिरिक्त बाधाओं का सम्मान करने के लिए मजबूर करेगा, जो CharSequence toString()विधि के javadoc toString()विधि पर डालता है ; अर्थात यह एक तार को वापस लौटा देना चाहिए जिसमें दिए गए क्रम से वर्ण हों charAt()

आपका आईडीई आपको यह याद दिलाने में भी मदद नहीं करेगा कि आपको संभवतः ओवरराइड करना चाहिएtoString() । उदाहरण के लिए, intellij में, यह वही है जो आप देखेंगे यदि आप एक नया CharSequenceकार्यान्वयन बनाते हैं : http://puu.sh/2w1RJ । की अनुपस्थिति पर ध्यान दें toString()

यदि आप toString()एक मनमानी पर भरोसा करते हैं CharSequence, तो यह काम करना चाहिए बशर्ते कि CharSequenceकार्यान्वयनकर्ता ने अपना काम ठीक से किया हो। लेकिन अगर आप किसी भी अनिश्चितता पूरी तरह से बचना चाहते हैं, तो आप एक का उपयोग करना चाहिए StringBuilderऔर append()इसलिए की तरह,:

final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();

9
आपको गलतियाँ नहीं करनी चाहिए / अपना कोड बदतर नहीं बनाना चाहिए क्योंकि दूसरों ने गलती की हो सकती है।
लोदिविज्क

9
नया StringBuilder (charSequence) लौटाएं ।toString (); एक एकल लाइनर के बराबर है।
गेबर लिप्टेक

22
इस जवाब गलत हैCharSequence इंटरफ़ेस स्पष्ट रूप से परिभाषित करता है toString()- implementor इस चूक नहीं होंगे। जावाडोक राज्यों "एक स्ट्रिंग इस अनुक्रम के रूप में एक ही क्रम में इस क्रम में वर्ण युक्त देता है। स्ट्रिंग की लंबाई इस क्रम की लंबाई हो जाएगा" में स्थापना के बाद से 1.4लोग, कृपया सत्यापित करें कि आप क्या
बढ़ाते हैं

2
यह बेवक़ूफ़ी है। यदि आप अनुबंध का पालन करने के लिए कार्यान्वयनकर्ता पर भरोसा नहीं करते हैं, तो सभी दांव बंद हैं। इसे एक पैरामीटर के रूप में पारित करना StringBuilderबस के रूप में अच्छी तरह से आप क्या उम्मीद करने में विफल हो सकता है। वही किसी भी अन्य इंटरफ़ेस के लिए जाता है, जैसे कि Listया Set, विशेष रूप से उनके equals()और hashCode()तरीके जो ओवरराइड के बिना संकलन करेंगे, लेकिन अनुबंध के अनुसार ओवरराइड किया जाना चाहिए।
शमोसल

3
तथ्य यह है कि इंटरफ़ेस ऐसा करता है, यकीनन उस संबंध में एक खराब निर्णय है, और मेरा जवाब केवल इस बात पर प्रकाश डालता है कि यह मानव त्रुटि के लिए सामान्य जगह की तुलना में आसान है।
सुगंधित

19

आप सीधे String.valueOf () का उपयोग कर सकते हैं

String.valueOf(charSequence)

हालांकि यह वैसा ही है क्योंकि toString()यह charSequenceवास्तव में स्टर्लिंग को कॉल करने से पहले एक अशक्त जांच करता है ।

यह तब उपयोगी होता है जब कोई विधि charSequenceया तो nullमान लौटा सकती है ।


8
यह वास्तव में आज मुझे थोड़ा सा ही है। यदि charSequenceअशक्त है तो लौटा हुआ स्ट्रिंग होगा "null"और नहीं null
क्रिसटॉमास

ओह। समझ में आता है। मैं इस उत्तर को हटा दूंगा
अभिषेक बत्रा

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