From 8d58231e92b0992bf69e9d99339700d70313a9d7 Mon Sep 17 00:00:00 2001 From: Shekhar Gulati Date: Mon, 16 May 2016 19:42:57 +0530 Subject: [PATCH] Added support for `decDecode` --- src/main/java/strman/Strman.java | 16 +++++++++++++++- src/test/java/strman/StrmanTest.java | 8 ++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/strman/Strman.java b/src/main/java/strman/Strman.java index b54d39b..0d3a83c 100644 --- a/src/main/java/strman/Strman.java +++ b/src/main/java/strman/Strman.java @@ -345,7 +345,21 @@ public abstract class Strman { return value.chars().mapToObj(ch -> leftPad(Integer.toBinaryString(ch), "0", 16)).collect(joining()); } - public static String leftPad(String value, String pad, int length) { + /** + * Convert decimal unicode (16 digits) string to string chars + * + * @param value The value to decode + * @return decoded String + */ + public static String decDecode(final String value) { + validate(value, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER); + return Arrays + .stream(value.split("(?<=\\G.{5})")) + .map(data -> String.valueOf(Character.toChars(Integer.parseInt(data)))) + .collect(joining()); + } + + public static String leftPad(final String value, final String pad, final int length) { validate(value, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER); if (value.length() >= length) { return value; diff --git a/src/test/java/strman/StrmanTest.java b/src/test/java/strman/StrmanTest.java index 0cb6432..09c3e60 100644 --- a/src/test/java/strman/StrmanTest.java +++ b/src/test/java/strman/StrmanTest.java @@ -283,4 +283,12 @@ public class StrmanTest { assertThat(binEncode("Á"), equalTo("0000000011000001")); assertThat(binEncode("AA"), equalTo("00000000010000010000000001000001")); } + + @Test + public void decDecode_shouldDecodeDecimalStringToString() throws Exception { + assertThat(decDecode("28450"),equalTo("漢")); + assertThat(decDecode("00065"),equalTo("A")); + assertThat(decDecode("00193"),equalTo("Á")); + assertThat(decDecode("0006500065"),equalTo("AA")); + } } \ No newline at end of file