我想知道如何使用javascript在字符串中的hypen后大写第一个字母。如果没有hypen str应该小写
var result = capitalize("js-script");
function capitalize(str){
return str.split("-")[1].charAt(0).toUpperCase()+ str.slice(1);
}
预期输出:
js-script => js-Script
tom => tom
答案 0 :(得分:2)
考虑改用正则表达式-匹配-
和字母字符,并替换为-
,然后将该单词字符大写:
const capitalize = (str) => str.replace(/-([a-z])/g, (_, char) => '-' + char.toUpperCase());
console.log(capitalize("js-script"));
console.log(capitalize("foo-bar-baz"));
要修复原始代码,如果输入中仅包含一个-
,则需要将其余字符保存在-
之后的部分(而不仅仅是{{ 1}}):
charAt(0)
答案 1 :(得分:1)
您可以使用正则表达式并向后看:
console.log(capitalize("js-script"));
function capitalize(str){
return str.replace(/(?<=-)\w/g, (text) => text.toUpperCase());
}
答案 2 :(得分:0)
您可以简单地使用正则表达式和替换方法
-[a-z]
-
-匹配字符-
[a-z]
-匹配从a到z的任何字符
function capitalize(str){
return typeof str === 'string' ? str.replace(/-([a-z])/gi,(m,g1)=> `-${g1.toUpperCase()}`) : str
}
console.log(capitalize("js-script"))
console.log( capitalize("tom"))
答案 3 :(得分:0)
您可以这样做
function capitalize(str){
let arrSplit = str.split("-")
let joinArray = [];
for(var i=0;i<arrSplit.length;i++){
if(i==0){
joinArray.push(arrSplit[i]);
}else{
joinArray.push(arrSplit[i].charAt(0).toUpperCase()+arrSplit[i].slice(1));
}
}
return joinArray.join("-",)
}
console.log(capitalize("js-script"))
console.log(capitalize("js-script-again"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>