From 0440a6c65d64fa1f5c0f7257db303aed9b71bd26 Mon Sep 17 00:00:00 2001 From: Andrei Ovcharenko Date: Sat, 1 Aug 2026 04:52:19 +0300 Subject: [PATCH] Handle literal characters in CamelCase conversion --- src/main/java/kyu6/CamelCase.java | 3 ++- src/test/java/kyu6/CamelCaseTest.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/kyu6/CamelCase.java b/src/main/java/kyu6/CamelCase.java index 1093287..c14043b 100644 --- a/src/main/java/kyu6/CamelCase.java +++ b/src/main/java/kyu6/CamelCase.java @@ -29,9 +29,10 @@ public static String fromCamelCase(String input) { } public static String toCamelCase(String str) { + if (str == null || str.isEmpty()) return ""; return Arrays.stream(str.split(" ")) .filter(s -> s.length() > 0) - .map(s -> s.replaceFirst(s.substring(0, 1), s.substring(0, 1).toUpperCase(Locale.ROOT))) + .map(s -> s.substring(0, 1).toUpperCase(Locale.ROOT) + s.substring(1)) .collect(Collectors.joining()).trim(); } diff --git a/src/test/java/kyu6/CamelCaseTest.java b/src/test/java/kyu6/CamelCaseTest.java index e632d8d..1b80eb2 100644 --- a/src/test/java/kyu6/CamelCaseTest.java +++ b/src/test/java/kyu6/CamelCaseTest.java @@ -21,4 +21,14 @@ public class CamelCaseTest { void smokeTestsShouldExecuteApi() { quality.SmokeMethodTestHarness.verify(kyu6.CamelCase.class); } + + @Test + void toCamelCaseShouldTreatRegexCharactersLiterally() { + assertEquals("[abc?def\\ghi$there", kyu6.CamelCase.toCamelCase("[abc ?def \\ghi $there")); + } + + @Test + void toCamelCaseShouldHandleNullInput() { + assertEquals("", kyu6.CamelCase.toCamelCase(null)); + } }