package se.unlogic.standardutils.numbers; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.regex.Pattern; public class NumberUtils { private static final Pattern NUMBER_PATTERN = Pattern.compile("\\D*"); public static boolean isInt(String value) { if (value != null) { try { Integer.parseInt(value); return true; } catch (NumberFormatException e) { } } return false; } public static boolean isLong(String value) { if (value != null) { try { Long.parseLong(value); return true; } catch (NumberFormatException e) { } } return false; } public static boolean isFloat(String value) { if (value != null) { try { Float.parseFloat(value); return true; } catch (NumberFormatException e) { } } return false; } public static boolean isDouble(String value) { if (value != null) { try { Double.parseDouble(value); return true; } catch (NumberFormatException e) { } } return false; } public static Integer toInt(String value) { if (value != null) { try { return Integer.parseInt(value); } catch (NumberFormatException e) { } } return null; } public static ArrayList<Integer> toInt(Collection<String> values) { if (values == null) { return null; } else { ArrayList<Integer> validIntegers = new ArrayList<Integer>(); for (String value : values) { if (value != null) { Integer intValue = NumberUtils.toInt(value); if (intValue != null) { validIntegers.add(intValue); } } } if (validIntegers.isEmpty()) { return null; } else { return validIntegers; } } } public static ArrayList<Integer> toInt(String[] values) { if (values == null) { return null; } else { ArrayList<Integer> validIntegers = new ArrayList<Integer>(); for (String value : values) { if (value != null) { Integer intValue = NumberUtils.toInt(value); if (intValue != null) { validIntegers.add(intValue); } } } if (validIntegers.isEmpty()) { return null; } else { return validIntegers; } } } public static Long toLong(String value) { if (value != null) { try { return Long.parseLong(value); } catch (NumberFormatException e) { } } return null; } public static Float toFloat(String value) { if (value != null) { try { return Float.parseFloat(value); } catch (NumberFormatException e) { } } return null; } public static Double toDouble(String value) { if (value != null) { try { return Double.parseDouble(value); } catch (NumberFormatException e) { } } return null; } public static List<Double> toDouble(List<String> values) { if (values == null) { return null; } else { ArrayList<Double> validDoubles = new ArrayList<Double>(); for (String value : values) { if (value != null) { Double doubleValue = NumberUtils.toDouble(value); if (doubleValue != null) { validDoubles.add(doubleValue); } } } if (validDoubles.isEmpty()) { return null; } else { return validDoubles; } } } public static List<Long> toLong(List<String> values) { if (values == null) { return null; } else { ArrayList<Long> validLongs = new ArrayList<Long>(); for (String value : values) { if (value != null) { Long LongValue = NumberUtils.toLong(value); if (LongValue != null) { validLongs.add(LongValue); } } } if (validLongs.isEmpty()) { return null; } else { return validLongs; } } } public static Long getNumbers(String revstring) { String result = NUMBER_PATTERN.matcher(revstring).replaceAll(""); return toLong(result); } public static String formatNumber(Object value, int minDecimals, int maxDecimals, boolean grouping){ DecimalFormat formatter = new DecimalFormat(); formatter.setMinimumFractionDigits(minDecimals); formatter.setMaximumFractionDigits(maxDecimals); formatter.setGroupingUsed(grouping); return formatter.format(value); } }