2013-10-29 6 views
9

स्काला के StringLike विधि replaceAllLiterally(literal: String, replacement: String): Stringक्या स्कैला के स्ट्रिंगलाइक.रेप्लेस का उपयोग करने का कोई कारण जावा के स्ट्रिंग.रप्लेस पर है?

इस विधि String replace(CharSequence target, CharSequence replacement) साथ जावा के स्ट्रिंग के लिए प्रभाव में बहुत समान प्रतीत हो रहा है है।

क्या स्कैला संस्करण का उपयोग करने का कोई कारण है?

(regex संकलन कदम के माध्यम से जा नहीं है, हालांकि मुझे लगता है कि बेंचमार्क नहीं किया है तेजी से होने के लिए जावा के संस्करण सक्षम करने के लिए प्रतीत होता है)

+0

हां। कारण - आप पात्रों से बचने के लिए नफरत कर रहे हैं। –

+0

बस जावा स्रोत को देखा - CharSequence संस्करण (एकल-संस्करण-संस्करण के विपरीत) के लिए बाहर निकलता है, जावा भी शाब्दिक regexes संकलित करता है। ऐसा लगता है कि @RexKerr द्वारा निर्दिष्ट नाम और स्ट्रिंगबिल्डर ओवरलोड के अलावा उनके बीच कोई वास्तविक अंतर नहीं है। – Jxtps

+0

@ ओम-नाम-नाम: मैं String.replace का संदर्भ दे रहा था, न कि String.replaceAll (जहां आपको भागने से बचने की आवश्यकता होगी)। – Jxtps

उत्तर

6

replaceStringBuilder पर टकराव से बचने के लिए है। StringBuilder भी StringLike है। क्यों StringBuilderreplace बदलने वाला नहीं था, मुझे यकीन नहीं है।

स्ट्रिंग पर इसका उपयोग करने का कोई कारण नहीं है जब तक कि आप StringLike (यानी दोनों लिपटे तार और उनके निर्माता) को संभालना नहीं चाहते हैं।

0

यह बहुत स्काला के विधि का उपयोग करने से दफना दिया जाता था की भ्रम की स्थिति से बचने के लिए उपयोगी है अक्षर से बचें। स्टैक ओवरफ़्लो उपयोगकर्ता @pedrofurla और @rampart81 इसे सभी अच्छी तरह से here समझाएं।

+2

जावा का 'String.replaceAll' regexes का उपयोग करता है और वर्णों से बचता है, लेकिन' String.replace' नहीं करता है। मुझे यकीन नहीं है कि यह सही तुलना है। –

+0

स्कैला में अंतर्निहित रूपांतरण के माध्यम से 'स्ट्रिंगऑप्स' में सभी जावा 'प्रतिस्थापन *' विधियां भी हैं। मैंने सोचा कि ओपी पूछ रहा था कि विशिष्ट स्कैला विधि 'प्रतिस्थापित' उपयोगी या यहां तक ​​कि बेहतर भी बनाता है। – Vidya

संबंधित मुद्दे

 संबंधित मुद्दे