将驼峰写法的单词转换为下划线分割的单词

直接上代码:

时间复杂度为O(1)的算法

 1 public static String convert(String humpWords) {
 2         // 初始化过滤的字符 start
 3         char[] fiterCharArray = "abcdefghigklmnopqrstuvwxyz.0123456789".toCharArray();
 4         Arrays.sort(fiterCharArray);
 5         // 初始化过滤的字符 end
 6 
 7         // 初始化要反回的char数组,双倍长度,因为要以下划线分割,所以长度必须大于原字符串长度,这里取双倍,确保够用
 8         char[] ch = new char[humpWords.length() * 2];
 9 
10         for (int i = 0, j = 0; i < humpWords.length(); i++, j++) {
11             if (Arrays.binarySearch(fiterCharArray, humpWords.charAt(i)) > -1) {
12                 ch[j] = (char) (humpWords.charAt(i));// 在声明的过滤字符数组里面的字符直接赋值
13             } else {
14                 ch[j] = '_';
15                 ch[j + 1] = (char) (humpWords.charAt(i) + ' ');// 不在声明的过滤字符数组里面的字符则认为该字符是大写字符,大写字符先添加下划线,再将字符加上空格转为小写赋值
16                 j++;
17             }
18         }
19         return new String(ch).trim();
20     }
原文地址:https://www.cnblogs.com/swtjavaspace/p/6500536.html