javax
@javax
Software Architect, Java Developer since 1996

Раскрыть переменные окружения в строке?

Как в Яве преобразовать строку типа

«Tralala ~/bin;${JAVA_HOME} trululu»

в

«Tralala /home/lenochka/bin;/bin/java trululu»

— т.е. раскрыть все переменные окружения и тильду, которые есть внутри строки.


Гуглил — нужные библиотеки не нашел :(
  • Вопрос задан
  • 2882 просмотра
Пригласить эксперта
Ответы на вопрос 4
@relgames
Java Developer
Задача в принципе делится на 3 части

1) выделение имен переменных
2) получение их значений
3) сборка строки

Для 1 можно использовать регулярные выражения, или какой-либо template-engine (накладно).
Для 2 можно использовать System.getenv
Для 3 — опять же регулярные выражения или простую замену через String.replace
Ответ написан
Комментировать
@janitor
Веб-разаботчик
Можно использовать System.getProperty(String Property);
Только придется для всех переменных окружения делать соответствие для параметра функции. К примеру:
'JAVA_HOME': 'java.home',
'~': 'user.home'

Java только сам начал учить, так что не знаю, может быть есть более правильный вариант
Ответ написан
@1nd1go
попробуй сделать System.exec("$JAVA_HOME").getOutputStream() и в строку считать. Получишь что переменная содержит
Ответ написан
@cthulhudx
Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n", envName, env.get(envName));
        }

->
JAVA_HOME=/usr/lib/jvm/java-8-oracle
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg
XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
GNOME_KEYRING_CONTROL=
LANG=ru_RU.UTF-8
XDG_SESSION_TYPE=x11
XDG_SESSION_ID=c1
DISPLAY=:0
GDM_LANG=ru_RU
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/quadra
UPSTART_EVENTS=xsession started
SESSION=ubuntu
DESKTOP_SESSION=ubuntu
GPG_AGENT_INFO=/run/user/1000/keyring/gpg:0:1
...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы