2016-01-14 39 views
-1

我有像「33分鐘」和「2小時20分鐘」,例如字符串,我希望他們簡稱爲「33米」和「2h20m」。我怎麼只保留字的第一個字母(縮寫),並在字符串中的所有數字?

到目前爲止,我有這個(基於堆棧交換一個類似的問題):https://jsfiddle.net/3tzrs7we/

var str1 = "33 minutes"; 
 
var str2 = "2 hours 20 minutes"; 
 

 
var str3 = str1.replace(/(\w)\w*\W*/g, function(_, i) { 
 
    return i.toUpperCase(); 
 
}) 
 
var str4 = str2.replace(/(\w)\w*\W*/g, function(_, i) { 
 
    return i.toUpperCase(); 
 
}) 
 
alert(str3 + ", " + str4);

但返回 「3M」 和 「2H2M。」

(這只是一個例子,在我的代碼,它看起來像${r.time.replace(/(\w)\w*\W*/g, function (_, i) {return i.toUpperCase();})}

+0

如果你不想轉換爲大寫剛落'.toUpperCase()'部分:https://jsfiddle.net/3tzrs7we/1/ – pawel

回答

0

例如,

var str2 = " 2 hours 20 minutes "; 
 
document.write(str2.replace(/([a-z])\w+|\s+/g, "$1"))

0

我不認爲你需要爲這個有限的情況下,正則表達式:

var long = "2 hours 20 minutes"; 
var short = long.replace(" minutes", "m").replace(" hours", "h"); 
+1

這個工作,但我也有「分串, 「‘小時’,‘天’,‘天’等等。所以就有點笨拙。 –

0
var str1 = "33 minutes"; 
var str2 = "2 hours 20 minutes"; 

var str3 = str1.replace(/(\w)\w*\W*/g, function(_, i) { 
return i.toLowerCase(); 
}) 
var str4 = str2.replace(/(\w)\w*\W*/g, function(_, i) { 
return i.toLowerCase(); 
}) 
alert(str3 + ", " + str4); 
相關問題