From e29858db737f9474f94e808cf9dd0eee4d5b4873 Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Thu, 13 Aug 2015 09:12:37 +0200 Subject: [PATCH] add a Utility method to concatenate CharSequences --- .../com/jayway/jsonpath/internal/Utils.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java b/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java index ce6e24ef..dd46f40b 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java @@ -74,6 +74,42 @@ public final class Utils { public static String join(String delimiter, Iterable objs) { return join(delimiter, "", objs); } + + public static String concat(CharSequence... strings) { + if (strings.length == 0){ + return ""; + } + if (strings.length == 1){ + return strings[0].toString(); + } + int length = 0; + // -1 = no result, -2 = multiple results + int indexOfSingleNonEmptyString = -1; + for (int i = 0; i< strings.length; i++) { + CharSequence charSequence = strings[i]; + int len = charSequence.length(); + length += len; + if (indexOfSingleNonEmptyString != -2 && len > 0){ + if (indexOfSingleNonEmptyString == -1){ + indexOfSingleNonEmptyString = i; + } else { + indexOfSingleNonEmptyString = -2; + } + } + } + if (length == 0){ + return ""; + } + if (indexOfSingleNonEmptyString > 0){ + return strings[indexOfSingleNonEmptyString].toString(); + } + StringBuilder sb = new StringBuilder(length); + for (CharSequence charSequence : strings) { + sb.append(charSequence); + } + return sb.toString(); + + } //--------------------------------------------------------- //