2016-12-17 35 views
-2

我想實現的是一個字符串:的JavaScript:取每個單詞的前三個字母的字符串,每一個字後,把「_」

var string = "Hello there my friend"; 

,並返回一個格式化字符串如下:

"HEL_THE_MY_FRI" 

所以我試圖把每個單詞的前三個字母在ST在每個環之後添加一個下劃線。在資本很容易:) .toUpperCase()

+1

'my'字不包含三個字符,爲什麼後面跟着'_'? – RomanPerekhrest

+1

@RomanPerekhrest我覺得解釋沒有考慮極端情況考慮在內。 – Soviut

回答

1

你可以使用replace爲:

var string = "Hello there my friend"; 
 

 
var result = string.toUpperCase().replace(/\b(\S{1,3})\S*/g, '$1').replace(/ /g, '_'); 
 
console.log(result);

1

既然你沒有提供到目前爲止你已經嘗試了任何代碼,你會採取的步驟是:

  • 劈在空格串
  • 循環在你的詞彙陣列
  • 從3個字符長
  • 大寫的子
  • 它添加到您的新的字符串每個字獲取子
  • 添加下劃線,如果不是最後一個字陣列中

var phrase = 'this is my string'; 
 
var words = phrase.split(' '); 
 

 
var result = ''; 
 
for (var i = 0; i < words.length; i++) { 
 
    var word = words[i]; 
 
    result += word.substring(0, 3).toUpperCase(); 
 
    
 
    if (i < words.length - 1) { 
 
    result += '_'; 
 
    } 
 
} 
 

 
console.log(result);

+0

LoL。你應該已經提供了Mahi的代碼! ':)' –

+1

@PraveenKumar我不喜歡做別人的功課他們,如果他們甚至不願意表明他們已經嘗試過的東西。 – Soviut

+0

您的代碼snipit類似於我在做什麼,我只是看到別人的世界如何去這樣做的。謝謝! :) – Clusi

0

console.log("Hello there my friend".split(" ").map((a)=>a.substring(0, 3)).join("_").toUpperCase());

+0

LoL。你應該提供了Soviut的解釋! ':D' –

+1

@PraveenKumar合併答案:P – Mahi

0

「一線」 使用String.replace()String.toUpperCase()String.slice()功能解決方案:

var string = "Hello there my friend", 
 
    replaced = string.replace(/\b(\w{1,3})(\w+\s?|\s)/g, '$1_').toUpperCase().slice(0,-1); 
 
    
 
console.log(replaced);

相關問題