अन्य दृष्टिकोणों के रूप में शायद उतना सुंदर नहीं है, लेकिन यह बहुत ठोस और पालन करने में आसान है, एस्प। जावा के लिए नए लोगों के लिए। एक चीज जो मुझे स्ट्रिंग क्लास के बारे में मिलती है वह यह है: यह बहुत लंबे समय के लिए रहा है और जब यह regexp के साथ एक वैश्विक प्रतिस्थापन और स्ट्रिंग्स के साथ एक वैश्विक प्रतिस्थापन का समर्थन करता है (CharSequences के माध्यम से), तो अंतिम में एक साधारण बूलर पैरामीटर नहीं है :'CaseInsensitive '। वास्तव में, आपने सोचा होगा कि बस उस एक छोटे से स्विच को जोड़ने से, शुरुआती लोगों के लिए विशेष रूप से टाले जाने वाले सभी अभावों से बचा जा सकता है। JDK 7 पर, स्ट्रिंग अभी भी इस एक छोटे से अतिरिक्त का समर्थन नहीं करता है!
वैसे भी, मैं पकड़ना बंद कर दूंगा। विशेष रूप से जावा के लिए हर किसी के लिए, यहाँ आपका कट-एंड-पेस्ट डेस पूर्व माचीना है । जैसा कि मैंने कहा, सुरुचिपूर्ण नहीं है और आपको कोई भी चालाक कोडिंग पुरस्कार नहीं मिलेगा, लेकिन यह काम करता है और विश्वसनीय है। किसी भी टिप्पणी, योगदान करने के लिए स्वतंत्र महसूस। (हां, मुझे पता है, स्ट्रिंगबफ़र शायद दो चरित्र स्ट्रिंग उत्परिवर्तन लाइनों के प्रबंधन का एक बेहतर विकल्प है, लेकिन तकनीकों को स्वैप करना काफी आसान है।)
public String replaceAll(String findtxt, String replacetxt, String str,
boolean isCaseInsensitive) {
if (str == null) {
return null;
}
if (findtxt == null || findtxt.length() == 0) {
return str;
}
if (findtxt.length() > str.length()) {
return str;
}
int counter = 0;
String thesubstr = "";
while ((counter < str.length())
&& (str.substring(counter).length() >= findtxt.length())) {
thesubstr = str.substring(counter, counter + findtxt.length());
if (isCaseInsensitive) {
if (thesubstr.equalsIgnoreCase(findtxt)) {
str = str.substring(0, counter) + replacetxt
+ str.substring(counter + findtxt.length());
// Failing to increment counter by replacetxt.length() leaves you open
// to an infinite-replacement loop scenario: Go to replace "a" with "aa" but
// increment counter by only 1 and you'll be replacing 'a's forever.
counter += replacetxt.length();
} else {
counter++; // No match so move on to the next character from
// which to check for a findtxt string match.
}
} else {
if (thesubstr.equals(findtxt)) {
str = str.substring(0, counter) + replacetxt
+ str.substring(counter + findtxt.length());
counter += replacetxt.length();
} else {
counter++;
}
}
}
return str;
}