Examples
"the-stealth-warrior"
gets converted to "theStealthWarrior"
"The_Stealth_Warrior"
gets converted to "TheStealthWarrior"
Solutions
javascript版本
1.自己
function toCamelCase(str){
let delimStr = str.split(/[-_]/);
return delimStr.map((item,index)=>{
if(index > 0){
item = item.slice(0,1).toUpperCase() + item.slice(1);
}
return item;
}).join("")
}
2.他人
function toCamelCase(str){
var regExp = /[-_]\w/ig;
return str.replace(regExp,match=>match.charAt(1).toUpperCase());
}
3.他人
function toCamelCase(str){
//箭头函数第一个参数表示正则匹配到的字符串
//箭头函数第二个参数表示正则分组()匹配到的字符串,所以.元字符必须带有()分组
return str.replace(/[-_](.)/g, (_, c) => c.toUpperCase());
}
4.他人prototype方式
String.prototype.camelize = function() {
return this
.replace(/-([a-z]|[A-Z])/g, function (g) { return g[1].toUpperCase(); })
.replace(/_([a-z]|[A-Z])/g, function (g) { return g[1].toUpperCase(); });
};
function toCamelCase(str){
return str.camelize();
}
java版本
1.自己
import java.lang.String;
class Solution{
static String toCamelCase(String s){
String[] splitStr = s.split("[-_]");
s = splitStr[0];
for(int i = 1 ; i < splitStr.length; i++){
s += splitStr[i].substring(0,1).toUpperCase() + splitStr[i].substring(1).toLowerCase();
}
return s;
}
}
2.他人
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.lang.StringBuilder;
class Solution{
static String toCamelCase(String s){
Matcher m = Pattern.compile("[_|-](\\w)").matcher(s);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group(1).toUpperCase());
}
return m.appendTail(sb).toString();
}
}
关于appendReplacement方法、appendTail方法参考:https://www.cnblogs.com/Hdaydayup/p/7071363.html
3.他人
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution{
static String toCamelCase(String s){
String[] stringArray = s.split("[-|_]");
return stringArray[0] + Arrays.stream(stringArray).skip(1).map(i -> i.substring(0,1).toUpperCase()+i.substring(1))
.collect(Collectors.joining());
}
}
4.他人
import java.util.Arrays;
class Solution{
static String toCamelCase(String str){
String[] words = str.split("[-_]");
return Arrays.stream(words, 1, words.length)
.map(s -> s.substring(0, 1).toUpperCase() + s.substring(1))
.reduce(words[0], String::concat);
}
}
关于reduce方法参考:https://blog.csdn.net/qq_40008535/article/details/89741094