小编Mic*_*ith的帖子

在文本中展开环境变量

我正在尝试编写一个函数来在java中执行环境变量的替换.所以如果我有一个看起来像这样的字符串:

用户$ {USERNAME}的APPDATA路径为$ {APPDATA}.

我希望结果如下:

用户msmith的APPDATA路径是C:\ Users\msmith\AppData\Roaming.

到目前为止,我的破坏实现如下所示:

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;
} …
Run Code Online (Sandbox Code Playgroud)

java regex

14
推荐指数
3
解决办法
1万
查看次数

标签 统计

java ×1

regex ×1