2016-11-14 11 views
1
function dashes(str) { 
    str = str.replace(/_/g,' ').replace(/\s+/g,"-").toLowerCase(); 
    return str; 
} 

//test cases 
dashes("thisCakeIsDelicious"); 
dashes("TheBig cat was Boastful"); 

それぞれの出力は「this-cake-is-delicious」と「the-big-cat-was-boastful」です。 「巨乳」の前にスペースを矛盾させることなく、「TheBig」の間にスペースを入れます。私は正規表現特定の大文字を試してみましたが、あなたはビッグと自慢はB.ダッシュを文字列に配置する

答えて

0

で始める見ることができるようにあなたはreplace機能

function dashes(str) { 
 
    return str.replace(/(?!^)(\s?[A-Z\s+])/g, function(x) { 
 
    \t return '-' + x.trim(); 
 
    }).toLowerCase(); 
 
} 
 

 
//test cases 
 
console.log(dashes("thisCakeIsDelicious")); 
 
console.log(dashes("TheBig cat was Boastful"));

0
x = "thisCakeIsDelicious"; 
x.replace(/([a-z](?=[A-Z]))| /g, '$1-'); 

結果ででコールバックを使用することができます

this-Cake-Is-Delicious

x = "TheBig cat was Boastful"; 
x.replace(/([a-z](?=[A-Z]))| /g, '$1-'); 

これは動作するはず

The-Big-cat-was-Boastful

4

で結果が、私は必要条件について全くわからないので、私はない文字で単語で除算することにしました(そうLLLLie意志llllie、ないl-l-l-lie

([a-z]+)([A-Z]{1})|(\s)

で結果本の

マッチ:

  • ([a-z]+):1以上小文字
  • ([A-Z]{1}):1大文字
  • (\s+):([\r\n\t\f\v ]に等しい)は、1つまたは複数の空白文字

var dasher = function(str) { 
 
    return str 
 
     .trim() 
 
     .replace(/([a-z]+)([A-Z]{1})|(\s+)/g, '$1-$2') 
 
     .toLowerCase(); 
 
} 
 

 
console.log(dasher('thisCakeIsDelicious')); 
 
console.log(dasher('TheBig cat was Boastful')); 
 
console.log(dasher('The cakeIsA  LLLLLie')); 
 
console.log(dasher(' JeremySpoke inClass Today'));

+0

'str.trim()。replace(...)'を使うと先行するダッシュを避けることができ、 '\ s + 'とマッチすればスペースのために単語間の余分なダッシュを避けることができます。 –

+0

@Jason Cust、私は空白が関係していると思っていましたが、例ではOPを 'replace(/ \ s +/g、" - ")'しようとしています。トリミングもいいアイデアだと思います。私はちょうど問題を見つけました。 'TheCakeIsALie'の出力は" the-cake-is-alie "です。その場合、文字で区切る必要があります。 – Marcs

関連する問題