में पर्यावरण चर का विस्तार करें मैं जावा में पर्यावरण चर के प्रतिस्थापन करने के लिए एक फ़ंक्शन लिखने की कोशिश कर रहा हूं। तो अगर मैं एक स्ट्रिंग है कि इस तरह देखा था:टेक्स्ट
उपयोगकर्ता $ {USERNAME} के APPDATA पथ $ {APPDATA} है।
मैं परिणाम होना चाहते हैं: \ Users \ msmith \ AppData \ रोमिंग:
उपयोगकर्ता msmith के APPDATA पथ सी है।
अब तक मेरी टूट कार्यान्वयन इस तरह दिखता है:
public static String expandEnvVars(String text) {
Map<String, String> envMap = System.getenv();
String pattern = "\\$\\{([A-Za-z0-9]+)\\}";
Pattern expr = Pattern.compile(pattern);
Matcher matcher = expr.matcher(text);
if (matcher.matches()) {
for (int i = 1; i <= matcher.groupCount(); i++) {
String envValue = envMap.get(matcher.group(i).toUpperCase());
if (envValue == null) {
envValue = "";
} else {
envValue = envValue.replace("\\", "\\\\");
}
Pattern subexpr = Pattern.compile("\\$\\{" + matcher.group(i) + "\\}");
text = subexpr.matcher(text).replaceAll(envValue);
}
}
return text;
}
ऊपर नमूना पाठ, matcher.matches()
रिटर्न झूठी का उपयोग करना। हालांकि अगर मेरा नमूना पाठ ${APPDATA}
है तो यह काम करता है।
क्या कोई मदद कर सकता है?
यह काम करता है। धन्यवाद! –
@ माइकल, आपका स्वागत है। – jjnguy
matcher.group (0) के साथ आपका उदाहरण फेंकता है क्योंकि लौटाई गई स्ट्रिंग के $ {} भाग इस मामले के लिए बच निकले होंगे। इसलिए मैंने अभिव्यक्ति के लिए "\\ $ \\ {" + matcher.group (1) + "\\}" का उपयोग किया। –