Java example
Convert snake_case to camelCase in Java
Java can split underscore-delimited tokens, normalize them with Locale.ROOT, and capitalize every token after the first.
Java code
import java.util.Locale;
static String snakeToCamel(String value) {
String cleaned = value.trim().replaceAll("^_+|_+$", "");
if (cleaned.isEmpty()) return "";
String[] parts = cleaned.split("_+");
StringBuilder result = new StringBuilder(parts[0].toLowerCase(Locale.ROOT));
for (int i = 1; i < parts.length; i++) {
String part = parts[i].toLowerCase(Locale.ROOT);
if (part.isEmpty()) continue;
result.append(Character.toUpperCase(part.charAt(0)));
result.append(part.substring(1));
}
return result.toString();
}
snakeToCamel("user_profile_image");
// "userProfileImage"Use Locale.ROOT for predictable identifier casing that is not affected by the machine's default locale.
A StringBuilder joins normalized tokens efficiently; broader tokenization is needed when source values contain mixed separators or acronyms.
Edge cases to consider
- Acronym casing should follow the codebase policy.
- Use Locale.ROOT instead of user-locale casing for identifiers.
- Recursive JSON key conversion is separate from transforming one string.
- Different source keys can normalize to the same camelCase key and need a conflict policy.
Example
| Before | After |
|---|---|
| user_profile_image | userProfileImage |
| __user__profile__ | userProfile |
| api_response_url | apiResponseUrl |
| created_at | createdAt |
Java code
assert snakeToCamel("user_profile_image").equals("userProfileImage");
assert snakeToCamel("__user__profile__").equals("userProfile");
assert snakeToCamel("api_response_url").equals("apiResponseUrl");
assert snakeToCamel("created_at").equals("createdAt");Try the conversion online
Use the browser-based converter for quick checks, batch values, acronym handling, or inputs that mix several naming conventions.
Detected: snake_case
camelCase output
userProfileImageUrl
All naming formats
camelCase
userProfileImageUrlPascalCase
UserProfileImageUrlsnake_case
user_profile_image_urlkebab-case
user-profile-image-urlCONSTANT_CASE
USER_PROFILE_IMAGE_URLdot.case
user.profile.image.urlpath/case
user/profile/image/urlConversion happens locally in your browser. Your input is not sent to a conversion server.