From c4eb78dc57d8bb6c78505545810cf4f335f2f265 Mon Sep 17 00:00:00 2001 From: uw4 Date: Thu, 18 Jan 2024 12:38:57 +0100 Subject: [PATCH] Fix $split issues. #29 #31 - don't treat string separator as regexp. #29 - preserve trailing empty result strings. #31 - correctly $split("", "") and only split limit characters in first place. #31 - added new tests covering these cases --- .../java/com/dashjoin/jsonata/Functions.java | 14 ++++++- .../java/com/dashjoin/jsonata/StringTest.java | 38 +++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/dashjoin/jsonata/Functions.java b/src/main/java/com/dashjoin/jsonata/Functions.java index ec76f2a..b57f739 100644 --- a/src/main/java/com/dashjoin/jsonata/Functions.java +++ b/src/main/java/com/dashjoin/jsonata/Functions.java @@ -1061,9 +1061,19 @@ public static List split(String str, Object pattern, Number limit) { return result; if (pattern instanceof String) { - result = Arrays.asList( str.split((String)pattern) ); + String sep = (String)pattern; + if (sep.isEmpty()) { + // $split("str", ""): Split string into characters + int l = limit!=null ? limit.intValue() : Integer.MAX_VALUE; + for (int i=0; i