在JavaScript中使用hypen后将字符串大写

时间:2019-07-17 04:00:38

标签: javascript string split

我想知道如何使用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

4 个答案:

答案 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>