我正在嘗試用時間格式替換 4 個數字。例如,如果用戶輸入 1234 以替換為 12:34
我發現這個正則運算式可以完成這項作業
let myString = "1234";
myString.replace(/\b(\d{2})(\d{2})/g, '$1:$2')
但是現在我想弄清楚如何將它用于類似的情況
94 - 這應該替換為 23 然后它在冒號之后的時間相同
01:74 - 這應該替換為 01:59
我找到了一個可以做到這一點的正則運算式^([0-1]?[0-9]|2[0-3]):[0-5][0-9],但我無法弄清楚如何將其與.replace
uj5u.com熱心網友回復:
您需要匹配第一對和第二對數字,然后通過它們的最大值來系結它們。獲得有界值后,您可以填充數字并用冒號連接它們。
const toTimeString = (value) => {
const
[, hours, minutes] = value.match(/^(\d{2})(\d{2})$/),
hour = `${Math.min( hours, 24)}`.padStart(2, '0'),
minute = `${Math.min( minutes, 59)}`.padStart(2, '0');
return `${hour}:${minute}`;
};
console.log(toTimeString('0174')); // 01:59
console.log(toTimeString('3412')); // 24:12
現在,這是一個替換示例:
const minPad = (value, min) => `${Math.min(value, min)}`.padStart(2, '0');
const toTimeString = (value) =>
value.replace(/\b(\d{2})(\d{2})\b/g, (match, hours, minutes) =>
`${minPad(hours, 24)}:${minPad(minutes, 59)}`);
console.log(toTimeString('0174 3412')); // 01:59 24:12
uj5u.com熱心網友回復:
有一個多載replace它需要一個函式,您可以使用它來執行您需要的任何邏輯,例如:
let myString = "1234";
function formatTime(input){
return input.replace(/\b(\d{2})(\d{2})/, (_,hh,mm) => {
return `${Math.min(hh,24)}:${Math.min(mm,59)}`
})
}
console.log(formatTime("1234"));
console.log(formatTime("3412"));
console.log(formatTime("0174"));
uj5u.com熱心網友回復:
我看不出有什么好的理由在你的情況下使用正則運算式。
只需一個簡單的函式即可完成這項作業。
function transformTextToHHMMTimeFormat(text) {
const firstNumber = Number(text.slice(0, 2))
const secondNumber = Number(text.slice(2, 4))
const hour = Math.min(firstNumber, 24)
const minute = Math.min(secondNumber, 59)
return `${hour}:${minute}`
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383178.html
標籤:javascript 细绳 时间
上一篇:在R中的最后一個日期之后提取文本
