2012-11-05 28 views
5

मैं बिंदु (ए, बी) से स्ट्रिंग का एक हिस्सा लेने की कोशिश कर रहा हूं और स्ट्रिंग में दिए गए मानों से अक्षरों को 'एक्स' में प्रतिस्थापित कर रहा हूं।जावा विशिष्ट स्ट्रिंग के साथ स्ट्रिंग का हिस्सा बदलना

उदाहरण: यदि स्ट्रिंग ABC123 और switch(3,5) कहा जाता है, तो यह इसे ABCXXX में बदल देगा।

अब तक मेरे पास है: किसी भी मदद के लिए

public void switch(int p1, int p2) 
{ 
    String substring = myCode.substring(p1,p2-1); 
} 

मैं बहुत खो गया हूँ .... धन्यवाद!

+0

संयोग से, इस होमवर्क है? – Azulflame

+0

क्या XXX भाग या वापसी वाला शब्द पूर्व परिभाषित शब्द होना चाहिए? क्या यह हमेशा XXX होना चाहिए, या कभी-कभी XYZ या WXY होना चाहिए? – Heskja

+0

आप अपनी विधि 'स्विच' नाम नहीं दे सकते। जावा –

उत्तर

1

जावा String रों अपरिवर्तनीय हैं और बदला नहीं जा सकता। हालांकि, आप एक विधि लिख सकते हैं जो new String को उन वर्णों के साथ लौटाता है। StringBuilder अपने आप को परिचित करने के लिए एक अच्छी कक्षा है क्योंकि यह तेज़ स्ट्रिंग मैनिपुलेशन के लिए अनुमति देता है।

StringBuilder प्रलेखन: http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

public class StringReplace { 

    public static String replaceRange(String s, int start, int end){ 
     StringBuilder b = new StringBuilder(s); 

     for(int i = start; i <= end; i++) 
      b.setCharAt(i, 'x'); 

     return b.toString(); 
    } 

    public static void main(String[] args){ 
     String test = "mystringtoreplace"; 
     String replaced = replaceRange(test, 3, 8); 
     System.out.println(replaced); 
    } 

} 
+0

मैं इसे समझता हूं लेकिन यह विधि किसी ऑब्जेक्ट के लिए है जिसमें केवल दो पैरामीटर (int, int) हो सकते हैं। मैं जिस प्रतिस्थापन को प्रतिस्थापित करने की कोशिश कर रहा हूं वह किसी अन्य वर्ग में बनाई गई वस्तु से आता है। – user1729448

+0

ऐसा लगता है कि आप एक संदर्भ को अद्यतन करने का प्रयास कर रहे हैं जो वास्तविक स्ट्रिंग को संशोधित नहीं करता है। इस उदाहरण में, एक नया 'स्ट्रिंग प्रतिस्थापित' बनाने के बजाय आप केवल 'test = replaceRange (test, 3, 8)' कर सकते हैं, यह आपके संदर्भ को अपडेट करेगा। इसलिए, आपकी विधि केवल 'स्टार्ट' और' एंड' वैरिएबल ले सकती है, जिस बिंदु पर आप 'myVar = replaceRange (myVar, start, end) कर सकते हैं; '। – Joe

+0

धन्यवाद ... मुझे यह काम करने के लिए मिला – user1729448

0

बाएं और दाएं हाथ के हिस्सों (जिसे आप रखना चाहते हैं) के लिए बस दो सबस्ट्रिंग करें, फिर उन्हें एक्स के उचित संख्या के साथ संयोजित करें।

-1

इस प्रयास करें:

public class Sub { 

    public String replaceChar(String str, int x, int y){ 
     String temp = "XXX"; 
     String str1 = ""; 
     str1 = str.substring(x, y+1); 
     str = str.replace(str1, temp); 
     return str; 
    } 

    public static void main(String args[]){ 
     Sub s = new Sub(); 
     System.out.println(s.replaceChar("ABC123", 3, 5)); 
    } 

} 
+0

ए में यह एक आरक्षित कीवर्ड है ए) उन्हें कोड न दें। उन्हें नौकरी पाने के लिए आवश्यक उपकरण दें। बी) प्रश्न के लिए उचित स्वरूपण करें ("यह वही है जो आपको करने की ज़रूरत है, इसे करने का एक तरीका यहां है: * कोड डालें *। यह * सम्मिलित विवरण * द्वारा काम करता है) – Azulflame

+0

मैंने कोशिश की और यह काम किया और यदि वे कोड देखते हैं स्माल स्निपेट में वे बेहतर समझ सकते हैं ... और मैंने ctrl + k द्वारा कोड स्वरूपित किया है और सबमिट किया है ... मुझे नहीं पता कि यह अन्यथा स्वरूपण कर रहा है ??? – BloodRed

+0

प्रश्न प्रस्तुत करने के तरीके के रूप में स्वरूपण – Azulflame

-1

कुछ ही कदम है कि मदद कर सकता है:

  1. पात्रों आप
  2. बदल की जरूरत की संख्या की पहचान स्ट्रिंग के बाईं ओर रखने के लिए करना चाहते हैं पहचानें (str.substring(0,p1);)
  3. स्ट्रिंग के दाहिने तरफ की पहचान करें जिसे आप रखना चाहते हैं (str.substring(p2,str.length());)
  4. उन्हें एक साथ रखो (String output = firstPart + addedChars + secondPart;)
1

उपयोग StringBuilder और उसके replace(int start, int end, String str) विधि