Как разобрать свойства Java, которые содержат переменные? - PullRequest
2 голосов
/ 26 января 2011

Я загружаю файл свойств Java, который выглядит следующим образом:

transfer_detail = Transfer {0} from {1} to {2} on {3}

После анализа этого свойства у меня должна быть строка, которая выглядит следующим образом:

Transfer 200.30 from Debit Account to Credit Account on 2011/01/26

Я реализовал свой парсер, который выглядит так:

// simplified for brevity
private static String translate(String string, String... replacements){
    String result = string;
    for(int i = 0; i < replacements.length; i++){
        result = result.replace("{"+i+"}", replacements[i]);
    }
    return result;
}
// and I use it this way:
String result = translate("transaction", "200.30", "Debit Account", etc...);

Что меня интересует, так это то, что есть что-то сделать в API J2SE. Даже для таких простых вещей я не люблю изобретать велосипед. Знаете ли вы какой-либо другой более простой или чистый способ добиться этого?

Ответы [ 3 ]

8 голосов
/ 26 января 2011

Вы хотите использовать класс MessageFormat для заполнения заполнителей фактическими значениями.

5 голосов
/ 26 января 2011

Не делай этого ... это отвратительно.:)

Использовать MessageFormat .

MessageFormat form = new MessageFormat("Transfer {0} from {1} to {2} on {3}");

System.out.println(form.format(new String[] {
        "200.30",
        "Debit Account",
        "Credit Account",
        "2011/01/26"
}));
0 голосов
/ 14 ноября 2013

API MessageFormat не работает с сообщениями, содержащими кавычки.

Вы должны выполнить работу вручную, используя, например, регулярное выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...