如何以非常具体的方式截断字符串
How to truncate a string in a very specific way
我有一个以毫秒为单位的函数,returns 是一个更大时间单位的格式化字符串。例如,如果您传入 74600 毫秒,则它 return 是字符串“1:14.600”。
我现在的问题是我只想 return 毫秒的前两位数字,但我不确定该怎么做。我在考虑截断字符串,但我认为你只能根据长度来做,如果分钟位置有两位数字,它就会把它扔掉。
这是我的 timeFormatter() 函数:
function timeFormatter(s) {
var ms = s % 1000;
s = (s - ms) / 1000;
var secs = s % 60;
s = (s - secs) / 60;
var mins = s % 60;
var hrs = (s - mins) / 60;
if (hrs > 0) {
} else {
if (mins > 0) {
if (secs < 9) {
if (ms < 99) {
return mins + ':0' + secs + '.0' + ms;
} else {
return mins + ':0' + secs + '.' + ms;
}
} else {
if (ms < 99) {
return mins + ':' + secs + '.0' + ms;
} else {
return mins + ':' + secs + '.' + ms;
}
}
} else {
if (ms < 99) {
return secs + '.0' + ms;
} else {
return secs + '.' + ms;
}
}
}
}
我知道里面有那么大的 if 语句,我还不太关心如何简化它。
谢谢!
编辑:我应该添加较小的字符串(不到一分钟)来解决这个问题,我只是使用 toFixed(2) 将它保持在小数点后两位,所以这个问题只存在于较大的字符串(超过一分钟)。
我建议您先对 ms
变量执行数学运算,然后再将它与其他变量连接起来。
ms = Math.floor(ms/10);//if you want to simulate integer division (truncation)
ms = Math.round(ms/10);//if you want to round the last digit of precision
我有一个以毫秒为单位的函数,returns 是一个更大时间单位的格式化字符串。例如,如果您传入 74600 毫秒,则它 return 是字符串“1:14.600”。
我现在的问题是我只想 return 毫秒的前两位数字,但我不确定该怎么做。我在考虑截断字符串,但我认为你只能根据长度来做,如果分钟位置有两位数字,它就会把它扔掉。
这是我的 timeFormatter() 函数:
function timeFormatter(s) {
var ms = s % 1000;
s = (s - ms) / 1000;
var secs = s % 60;
s = (s - secs) / 60;
var mins = s % 60;
var hrs = (s - mins) / 60;
if (hrs > 0) {
} else {
if (mins > 0) {
if (secs < 9) {
if (ms < 99) {
return mins + ':0' + secs + '.0' + ms;
} else {
return mins + ':0' + secs + '.' + ms;
}
} else {
if (ms < 99) {
return mins + ':' + secs + '.0' + ms;
} else {
return mins + ':' + secs + '.' + ms;
}
}
} else {
if (ms < 99) {
return secs + '.0' + ms;
} else {
return secs + '.' + ms;
}
}
}
}
我知道里面有那么大的 if 语句,我还不太关心如何简化它。
谢谢!
编辑:我应该添加较小的字符串(不到一分钟)来解决这个问题,我只是使用 toFixed(2) 将它保持在小数点后两位,所以这个问题只存在于较大的字符串(超过一分钟)。
我建议您先对 ms
变量执行数学运算,然后再将它与其他变量连接起来。
ms = Math.floor(ms/10);//if you want to simulate integer division (truncation)
ms = Math.round(ms/10);//if you want to round the last digit of precision