Подтвердить что ты не робот

Javascript/jQuery: разделите строку на верблюд и добавьте дефис, а не пробел

Я бы предположил, что это многопользовательская ситуация с регулярным выражением, но как бы вы разделили строку на верблюдке заглавными буквами, превратив их в строчные буквы, а затем добавив дефис между каждой новой строкой?

Например:

thisString

станет:

это строка

4b9b3361

Ответ 1

Попробуйте что-то вроде:

var myStr = 'thisString';

myStr = myStr.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();

Ответ 2

Позднее ответить, но это решение будет работать для случаев, когда одна буква является верблюжьей оболочкой.

'thisIsATest'.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase();  // this-is-a-test

Ответ 4

String.prototype.camelCaseToDashed = function(){
  return this.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
}
// Usage
"SomeVariable".camelCaseToDashed();

Ответ 5

Я не знаю, почему все эти решения настолько сложны, но я просто нашел, что этого достаточно:

function camelCaseToDash(input){ 
     // replace Capital letter with the letter + a dash: '-', then lowercase everything.
     return input.replace(/([A-Z])/g, '-$1').toLowerCase(); 
}    

//or, using a callback function, directly lowercasing.
function camelCaseToDashCallback(input){
     //replace capital letter with lowercase variant + a dash '-'.
     return input.replace(/([A-Z])/g, (x)=> "-"+ x.toLowerCase());
}    

обычно опция 1 работает быстрее: https://jsfiddle.net/4557z/17/