Java String Manipulation: извлечение целого числа и числа с плавающей запятой в зависимости от шаблона - PullRequest
2 голосов
/ 24 июля 2011

У меня есть следующие два возможных содержимого строки. Очевидно, что суммы всегда меняются, и я хотел бы извлечь ключевую информацию и

Case 0:   pricesString = ""
Case 1:   pricesString = "$0.023"
Case 2:   pricesString = "10+: $1.46 100+: $0.16 500+: $0.04"

В Case 0 Я бы ничего не хотел делать.

В Case 1 Я хотел бы выполнить:

article.addPrice(1, 0.023);

В Case 2 Я хотел бы выполнить:

article.addPrice(10, 1.46);
article.addPrice(100, 0.16);
article.addPrice(500, 0.04);

Как я могу извлечь эту информацию, чтобы я мог вызвать article.addPrice со значениями с плавающей запятой и целыми числами?

Ответы [ 2 ]

5 голосов
/ 24 июля 2011

Это похоже на задание для регулярных выражений:

String pricesString = "10+: $1.46 100+: $0.16 500+: $0.04";
Pattern p = Pattern.compile("(\\d+)\\+: \\$(\\d\\.\\d\\d)");
Matcher m = p.matcher(pricesString);
while (m.find()) {
    Intger.parseInt(m.group(1));
    Double.parseDouble(m.group(2));
}

Вы можете выбрать один из трех вариантов с помощью простой проверки .length().Код выше для последнего случая.Остальное eaiser

0 голосов
/ 24 июля 2011

Применяйте регулярное выражение \d+\.?\d* как можно чаще. Массив результатов можно проверить, содержит ли он 0, 1 или более значений.

Если есть 0, это Case 0.

Если есть, это Case 1. Вы можете добавить его к количеству 1 к статьям.

Если их больше, вы можете зациклить что-то вроде

for(int i = 0; i < result.length / 2; i++) {
    articles.addArticle(Integer.parseInt(result[i]), Double.parseDouble(result[i+1]));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...