Я хотел бы знать, как использовать первую букву после дефиса в строке с помощью javascript. Если нет дефиса, ул должен быть в нижнем регистре
var result = capitalize("js-script");
function capitalize(str){
return str.split("-")[1].charAt(0).toUpperCase()+ str.slice(1);
}
Ожидаемый результат:
js-script => js-Script
tom => tom



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вместо этого рассмотрите возможность использования регулярного выражения — сопоставьте - и буквенный символ и замените на - и этот символ слова с заглавной буквы:
const capitalize = (str) => str.replace(/-([a-z])/g, (_, char) => '-' + char.toUpperCase());
console.info(capitalize("js-script"));
console.info(capitalize("foo-bar-baz"));Чтобы исправить исходный код, если во входных данных будет только один -, вам нужно сохранить остальные символы в части после - (а не только charAt(0)):
function capitalize(str) {
if (!str.includes('-')) {
return str;
}
const [before, after] = str.split("-");
return before + '-' + after.charAt(0).toUpperCase() + after.slice(1);
}
console.info(capitalize('foo-bar'));
console.info(capitalize('foo'));использование [a-z] лучше, чем \w будет пытаться изменить _ and digits на верхний регистр, что не имеет значения,
Вы можете просто использовать регулярное выражение и заменить метод
-[a-z]
- - соответствует символу -[a-z] - соответствует любому символу от a до zfunction capitalize(str){
return typeof str === 'string' ? str.replace(/-([a-z])/gi,(m,g1)=> `-${g1.toUpperCase()}`) : str
}
console.info(capitalize("js-script"))
console.info( capitalize("tom"))Вы можете использовать регулярное выражение и посмотреть, чтобы сделать это:
console.info(capitalize("js-script"));
function capitalize(str){
return str.replace(/(?<=-)\w/g, (text) => text.toUpperCase());
}Вам не нужно избегать дефиса
Ты можешь это сделать,
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.info(capitalize("js-script"))
console.info(capitalize("js-script-again"))<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Возможный дубликат Делать имена через дефис в javascript заглавными буквами и Добавлять заглавную букву после каждого дефиса в строке