我们可以使用 javascript split 方法将字符串拆分为子字符串数组。例子:
var timeformat="HH:MM:SS";
var timeformatarray=timeformat.split(":");
如果分隔符不是常量,是否有一种简单的方法来拆分字符串。实际上,我必须拆分可能以任何格式出现的时间格式,例如:
var timeformat="HH hr : MM min : SS sec";
var timeformat="HHhour:MMminute:SSsecond";
var timeformat="HHh MMm SSs";
唯一不变的是 HH、MM 和 SS。Timeformat 是一个选项,用户可以指定他们想要显示的时间格式。“HH”、“MM”和“SS”是常量文本(不是数字),这三个是不会改变的固定常量。唯一可以改变的是时间格式字符串中的后缀和分隔符,如上面的示例所示。
我想要一种将时间格式字符串拆分为数组的方法,以便我可以处理它。我希望结果是:
timeformat[0] = "HH"
timeformat[1] = " hr : " <- with spaces (if any)
timeformat[2] = "MM"
timeformat[3] = " min : "
timeformat[4] = "SS"
timeformat[5] = " sec"
使用这个数组,我将格式化时间并添加相应的后缀和分隔符。我尝试了各种方法,使用正则表达式并遍历每个字符,但它们效率不高且不直接。我在这里先向您的帮助表示感谢。
解决方案:
我能够通过使用正则表达式、拆分和数组创建一个适用于格式字符串的方法来解决该问题。我相信会有更好的解决方案,但我什么也得不到,所以这是我解决问题的方法。我会感谢Stephen C
正则表达式的方向。
function GetTimeFormatArray(timeformatstring){
var timesuffixes = timeformatstring.split(/HH|MM|SS/);
timesuffixes= $.grep(timesuffixes,function(n){
return(n);
});
var pattern = timesuffixes.join('|');
var timeprefixes = timeformatstring.split(new RegExp(pattern));
timeprefixes = $.grep(timeprefixes,function(n){
return(n);
});
var timeFormatArray = [];
for(var i = 0; i < timesuffixes.length; i++){
timeFormatArray.push(timeprefixes[i]);
timeFormatArray.push(timesuffixes[i]);
}
return timeFormatArray;
}