diff --git a/inlong-sort/sort-formats/format-common/src/main/java/org/apache/inlong/sort/formats/util/StringUtils.java b/inlong-sort/sort-formats/format-common/src/main/java/org/apache/inlong/sort/formats/util/StringUtils.java index c0a706d3860..000d7a7175b 100644 --- a/inlong-sort/sort-formats/format-common/src/main/java/org/apache/inlong/sort/formats/util/StringUtils.java +++ b/inlong-sort/sort-formats/format-common/src/main/java/org/apache/inlong/sort/formats/util/StringUtils.java @@ -112,13 +112,9 @@ public static List> splitKv( switch (state) { // match previous kv delimiter first when there are more than one kvDelimiter case STATE_KEY: - if (i == 0) { - stringBuilder.append(ch); - } else { - key = stringBuilder.toString(); - stringBuilder.setLength(0); - state = STATE_VALUE; - } + key = stringBuilder.toString(); + stringBuilder.setLength(0); + state = STATE_VALUE; break; case STATE_VALUE: stringBuilder.append(ch); @@ -255,6 +251,7 @@ public static List> splitKv( case STATE_VALUE: value = stringBuilder.toString(); fields.put(key, value); + break; case STATE_KEY: if (lastKey != null) { value = stringBuilder.toString(); diff --git a/inlong-sort/sort-formats/format-row/format-kv/src/test/java/org/apache/inlong/sort/formats/kv/KvUtilsTest.java b/inlong-sort/sort-formats/format-row/format-kv/src/test/java/org/apache/inlong/sort/formats/kv/KvUtilsTest.java index 37bbe758aa3..953d607f9ca 100644 --- a/inlong-sort/sort-formats/format-row/format-kv/src/test/java/org/apache/inlong/sort/formats/kv/KvUtilsTest.java +++ b/inlong-sort/sort-formats/format-row/format-kv/src/test/java/org/apache/inlong/sort/formats/kv/KvUtilsTest.java @@ -210,7 +210,7 @@ public void testSplitDanglingKey1() { public void testSplitDanglingKey2() { Map kvMap = splitKv("f1&f2=3", '&', '=', null, null); - Assert.assertEquals("3", kvMap.get("f2")); + Assert.assertEquals("3", kvMap.get("f1&f2")); } @Test