From da85915b8ddff9a74041ee6f9c58bcba095a36c8 Mon Sep 17 00:00:00 2001 From: vic-nik Date: Sun, 22 Oct 2017 09:39:20 +0200 Subject: [PATCH] Partially resolved #78 (#96) * Partially resolved #78 (Hacktoberfest initiative) * Removing trailing whitespaces --- src/main/java/strman/Strman.java | 23 +++++++++++++++++++++++ src/test/java/strman/StrmanTests.java | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/src/main/java/strman/Strman.java b/src/main/java/strman/Strman.java index b66f717..b56f567 100644 --- a/src/main/java/strman/Strman.java +++ b/src/main/java/strman/Strman.java @@ -1389,6 +1389,29 @@ public abstract class Strman { return resultBuilder.toString(); } + /** + * Returns a string representation of the number passed in where groups of three digits are delimited by comma + * + * @param number Input number + * @return formatted String + */ + public static String formatNumber(long number) { + String stringRepresentation = Long.toString(number); + StringBuilder sb = new StringBuilder(); + int bound = stringRepresentation.length() - 1; + String delimiter = ","; + int counter = 0; + for (int i = bound; i >= 0; i--) { + char c = stringRepresentation.charAt(i); + if (i != bound && counter % 3 == 0) { + sb.append(delimiter); + } + sb.append(c); + counter++; + } + return sb.reverse().toString(); + } + public static String[] chop(String input, int step) { if (input == null || input.length() == 0) { return EMPTY_ARRAY; diff --git a/src/test/java/strman/StrmanTests.java b/src/test/java/strman/StrmanTests.java index c5ea9bc..3a3c7fd 100644 --- a/src/test/java/strman/StrmanTests.java +++ b/src/test/java/strman/StrmanTests.java @@ -1187,6 +1187,14 @@ public class StrmanTests { assertThat(chop("whitespace", 0)[0].length(), equalTo(10)); } + @Test + public void formatNumber_shouldFormatNumberWithCommaDelimiter() throws Exception { + assertThat(formatNumber(1000), equalTo("1,000")); + assertThat(formatNumber(100000), equalTo("100,000")); + assertThat(formatNumber(10000000), equalTo("10,000,000")); + assertThat(formatNumber(100000000), equalTo("100,000,000")); + } + @Test(expected = IllegalArgumentException.class) public void startCase_shouldThrowException() throws Exception { startCase(null);