2011-09-17 11 views
13

मैं जानना चाहता हूं कि जावा में tr /// (जैसा कि पर्ल में उपयोग किया जाता है) के बराबर है या नहीं। उदाहरण के लिए, को बदलने के लिए अगर मैं चाहता था सब "एस" एस "मिसिसिपी" में "पी" रों और इसके विपरीत के साथ, मैं, पर्ल में,जावा में tr /// (या समकक्ष) का उपयोग करने का कोई तरीका है?

#shebang and pragmas snipped... 
my $str = "mississippi"; 
$str =~ tr/sp/ps/; # $str = "mippippissi" 
print $str; 

एक ही तरीका है मैं यह करने के बारे में सोच सकते लिख सकता है जावा में, String.replace() विधि के साथ एक डमी चरित्र का उपयोग करने यानी

String str = "mississippi"; 
str = str.replace('s', '#'); // # is just a dummy character to make sure 
           // any original 's' doesn't get switched to a 'p' 
           // and back to an 's' with the next line of code 
           // str = "mi##i##ippi" 
str = str.replace('p', 's'); // str = "mi##i##issi" 
str = str.replace('#', 'p'); // str = "mippippissi" 
System.out.println(str); 

वहाँ यह करने के लिए एक बेहतर तरीका है है?

अग्रिम धन्यवाद।

+0

इस पोस्ट मदद कर सकता है http://stackoverflow.com/questions/ 3254358/की जगह-चार-टू-चार-में-एक-स्ट्रिंग –

उत्तर

6

कॉमन्स replaceChars आपकी सर्वश्रेष्ठ शर्त हो सकती है। AFAIK जेडीके में कोई प्रतिस्थापन (एआरआर) नहीं है।

1

कैसे स्थिर अपने प्रतिस्थापन है के आधार पर आप

char[] tmp = new char[str.length()]; 
for(int i=0; i<str.length(); i++) { 
    char c = str.charAt(i); 
    switch(c) { 
    case 's': tmp[i] = 'p'; break; 
    case 'p': tmp[i] = 's'; break; 
    default: tmp[i] = c; break; 
    } 
} 
str = new String(tmp); 

कर सकता है प्रतिस्थापन रनटाइम पर अलग-अलग करने की जरूरत है, तो आप (एक मेज देखने के साथ स्विच की जगह सकता है अगर आप जानते हैं कि सभी कोड पॉइंट्स आप की जरूरत एक सीमित सीमा में गिरावट को बदलने के लिए, जैसे एएससीआईआई), या, अगर सब कुछ विफल हो जाता है, तो Character से Character से हैशमैप।

0

@Dave पहले से ही करीबी प्रतिस्थापन ने बताया के रूप में है

अपाचे कॉमन्स StringUtils.replaceChars(String str, String searchChars, String replaceChars)

विवरण के अंश:

... 
StringUtils.replaceChars(null, *, *)   = null 
StringUtils.replaceChars("", *, *)    = "" 
StringUtils.replaceChars("abc", null, *)  = "abc" 
StringUtils.replaceChars("abc", "", *)   = "abc" 
StringUtils.replaceChars("abc", "b", null)  = "ac" 
StringUtils.replaceChars("abc", "b", "")  = "ac" 
StringUtils.replaceChars("abcba", "bc", "yz") = "ayzya" 
StringUtils.replaceChars("abcba", "bc", "y") = "ayya" 
StringUtils.replaceChars("abcba", "bc", "yzx") = "ayzya" 
... 
संबंधित मुद्दे

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