Javascript 如何将单词的首字母(缩写)和所有数字保持在一个字符串中?

Javascript 如何将单词的首字母(缩写)和所有数字保持在一个字符串中?,javascript,regex,Javascript,Regex,例如,我有“33分钟”和“2小时20分钟”之类的字符串,我希望它们缩写为“33m”和“2h20m” 到目前为止,我有以下问题(基于堆栈交换的类似问题): var str1=“33分钟”; var str2=“2小时20分钟”; var str3=str1.replace(/(\w)\w*\w*/g,函数(\uI){ 返回i.toUpperCase(); }) var str4=str2.replace(/(\w)\w*\w*/g,函数(\uI){ 返回i.toUpperCase(); }) 警

例如,我有“33分钟”和“2小时20分钟”之类的字符串,我希望它们缩写为“33m”和“2h20m”

到目前为止,我有以下问题(基于堆栈交换的类似问题):

var str1=“33分钟”;
var str2=“2小时20分钟”;
var str3=str1.replace(/(\w)\w*\w*/g,函数(\uI){
返回i.toUpperCase();
})
var str4=str2.replace(/(\w)\w*\w*/g,函数(\uI){
返回i.toUpperCase();
})

警报(str3+“,”+str4)我认为对于这种有限的情况,您不需要正则表达式:

var long = "2 hours 20 minutes";
var short = long.replace(" minutes", "m").replace(" hours", "h");
比如说,

var str2=“2小时20分钟”;

document.write(str2.replace(/([a-z])\w+\s+/g,“$1”)
如果不想转换成大写,只需删除
.toUpperCase()
部分:这是可行的,但我还有“分钟”、“小时”、“天”、“天”等字符串。所以它有点笨拙。
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);