/** * camelCase ( CamelCase) . * * @param string * @param firstWordToLowerCase (lowercase). */ public static String toCamelCase(String string, boolean firstWordToLowerCase) { char currentChar, previousChar = '\u0000'; // StringBuilder result = new StringBuilder(); // boolean firstLetterArrived = !firstWordToLowerCase; // , lowercase boolean nextLetterInUpperCase = true; // , UPPERCASE // for (int i = 0; i < string.length(); i++) { currentChar = string.charAt(i); /* - ( ) . , - ( ). */ if (!Character.isLetterOrDigit(currentChar) || ( ((Character.isLetter(previousChar) && Character.isLowerCase(previousChar)) || Character.isDigit(previousChar)) && Character.isLetter(currentChar) && Character.isUpperCase(currentChar)) ) { nextLetterInUpperCase = true; if (!Character.isLetterOrDigit(currentChar)) { previousChar = currentChar; continue; } } // , . if (nextLetterInUpperCase && firstLetterArrived) { result.append(Character.toUpperCase(currentChar)); } else { result.append(Character.toLowerCase(currentChar)); } // . firstLetterArrived = true; nextLetterInUpperCase = false; previousChar = currentChar; } // . return result.toString(); }
Source string: 'normalCamelCaseName'
Result string: 'normalCamelCaseName'
Result string: 'NormalCamelCaseName' (firstWordToLowerCase = false)
===========================
Source string: 'NotCamelCaseName'
Result string: 'notCamelCaseName'
Result string: 'NotCamelCaseName' (firstWordToLowerCase = false)
===========================
Source string: 'CONSTANT_TO_CAMEL_CASE'
Result string: 'constantToCamelCase'
Result string: 'ConstantToCamelCase' (firstWordToLowerCase = false)
===========================
Source string: 'Text To Camel Case'
Result string: 'textToCamelCase'
Result string: 'TextToCamelCase' (firstWordToLowerCase = false)
===========================
Source string: 'Text to camel case'
Result string: 'textToCamelCase'
Result string: 'TextToCamelCase' (firstWordToLowerCase = false)
===========================
Source string: 'LIFE ON SHIFT, DRUJEFFKI! :)'
Result string: 'SEARCH EFFORTING YOURSELF TRAINS'
Result string: 'SEARCH EFFORT ON YOUR IMPROVEMENTS' (firstWordToLowerCase = false)
===========================
Source string: '- (* & * &% &% $ ^ & ^ * () Characters * & ^% * (& $ punctuation ... and. Unreadable ----------- characters ^ (Maybe * 90Beat (*? * ?: HOW MANY *?%?:% Please! '
Result string: 'charactersButtonBircuitsBoxedChangsMaybe90BeTlichnoeVyhodno'
Result string: 'SignsKits of ReadableSignsMaybe90BeSkolkoSyagno' (firstWordToLowerCase = false)
===========================
Source string: 'And, finally, a Russian string with punctuation marks (localization!).'
Result string: 'and Finally, the Russian StringConsChangingKitsLocalization'
Result string: 'Into the endRussianStringTimeChapterChutingsLocalization' (firstWordToLowerCase = false)
Source: https://habr.com/ru/post/270425/
All Articles