File tree Expand file tree Collapse file tree
exercises/concept/squeaky-clean Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11class SqueakyClean {
22 static String clean (String identifier ) {
33 final StringBuilder cleanIdentifier = new StringBuilder ();
4+ boolean kebab = false ;
45 for (int i = 0 ; i < identifier .length (); i ++) {
56 final char ch = identifier .charAt (i );
67 if (Character .isSpaceChar (ch )) {
78 cleanIdentifier .append ("_" );
89 } else if (Character .isISOControl (ch )) {
910 cleanIdentifier .append ("CTRL" );
10- } else if (ch == '-' && i < identifier .length () + 1 ) {
11- i ++;
12- cleanIdentifier .append (Character .toUpperCase (identifier .charAt (i )));
13- } else if (ch >= 'α' && ch <= 'ω' ) {
14- } else if (Character .isAlphabetic (ch )) {
15- cleanIdentifier .append (ch );
11+ } else if (ch == '-' ) {
12+ kebab = true ;
13+ } else if (isLetter (ch )) {
14+ cleanIdentifier .append (
15+ kebab ? Character .toUpperCase (ch ) : ch
16+ );
17+ kebab = false ;
1618 }
1719 }
1820 return cleanIdentifier .toString ();
1921 }
22+ private static boolean isLetter (char ch ) {
23+ return Character .isLetter (ch ) && !(ch >= 'α' && ch <= 'ω' );
24+ }
2025}
Original file line number Diff line number Diff line change @@ -31,7 +31,7 @@ public void leading_and_trailing_spaces() {
3131
3232 @ Test
3333 public void ctrl () {
34- assertThat (SqueakyClean .clean ("my\0 Id " )).isEqualTo ("myCTRLId " );
34+ assertThat (SqueakyClean .clean ("my\0 \r \u007F Id " )).isEqualTo ("myCTRLCTRLCTRLId " );
3535 }
3636
3737 @ Test
@@ -49,6 +49,11 @@ public void kebab_to_camel_case() {
4949 assertThat (SqueakyClean .clean ("à-ḃç" )).isEqualTo ("àḂç" );
5050 }
5151
52+ @ Test
53+ public void kebab_to_camel_case_no_letter () {
54+ assertThat (SqueakyClean .clean ("a-1C" )).isEqualTo ("aC" );
55+ }
56+
5257 @ Test
5358 public void omit_lower_case_greek_letters () {
5459 assertThat (SqueakyClean .clean ("MyΟβιεγτFinder" )).isEqualTo ("MyΟFinder" );
You can’t perform that action at this time.
0 commit comments