2012-07-21 11 views
27

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

उदाहरण के लिए:

String str = "hi"; 

की जगह स्ट्रिंग स्थिति # 2 (i) एक और पत्र "कश्मीर"

मैं यह कैसे करते हैं? धन्यवाद!

उत्तर

33

Petar Ivanov के लिए replace a character at a specific index in a string question

स्ट्रिंग जवाब जावा में अपरिवर्तनीय हैं। आप उन्हें बदल नहीं सकते हैं।

आपको प्रतिस्थापित चरित्र के साथ एक नई स्ट्रिंग बनाने की आवश्यकता है।

String myName = "domanokz"; 
String newName = myName.substring(0,4)+'x'+myName.substring(5); 

या आप एक StringBuilder उपयोग कर सकते हैं:

StringBuilder myName = new StringBuilder("domanokz"); 
myName.setCharAt(4, 'x'); 

System.out.println(myName); 
15

Kay!

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

String str = "hi"; 
//str length is equal 2 but the character 
//'h' is in the position 0 and character 'i' is in the postion 1 


इसे ध्यान में रखते , सबसे अच्छा तरीका है इस समस्या से निपटने के लिए एक विधि पैदा कर रही है इस तरह एक स्ट्रिंग में दी गई स्थिति पर एक चरित्र को बदलने के लिए :

विधि:

public String changeCharInPosition(int position, char ch, String str){ 
    char[] charArray = str.toCharArray(); 
    charArray[position] = ch; 
    return new String(charArray); 
} 

तो फिर तुम इस तरह से विधि 'changeCharInPosition' बुलाना चाहिए:

String str = "hi"; 
str = changeCharInPosition(1, 'k', str); 
System.out.print(str); //this will return "hk" 

यदि आपके कोई प्रश्न हैं, तो संकोच न करें, कुछ पोस्ट करें!

public static String replaceCharAt(String s, int pos, char c) { 
    return s.substring(0,pos) + c + s.substring(pos+1); 
} 
+0

क्या यह आपको चरित्र को कुछ भी नहीं (खाली/हटा दें) से बदल देता है? – trusktr

+0

आपका मतलब कुछ भी नहीं है? एक खाली स्ट्रिंग या खाली रिक्त स्थान की एक स्ट्रिंग? – Chicodelarosa

+0

मुझे नहीं पता कि मैं क्या सोच रहा था। स्पष्ट रूप से एक खाली स्ट्रिंग '" "' '' 'के लिए तर्क के रूप में प्रयोग किया जा सकता है। – trusktr

11

एक निर्दिष्ट स्थान पर एक चरित्र बदलने के लिए

StringBuilder sb = new StringBuilder(str); 
sb.setCharAt(i - 1, 'k'); 
str = sb.toString(); 
+0

एक स्थिति से कुछ चार को बदलने के लिए मेरे लिए काम किया। –

2

आप एक स्ट्रिंग फिर से उपयोग करने की आवश्यकता है, तो का उपयोग StringBuffer:

String str = "hi"; 
StringBuffer sb = new StringBuffer(str); 
while (...) { 
    sb.setCharAt(1, 'k'); 
} 

संपादित करें:

ध्यान दें कि StringBufferStringBuilder तेजी से होता है का उपयोग करते हुए, लेकिन थ्रेड-सुरक्षित नहीं है, जबकि, धागा सुरक्षित है।

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