我是Typescript的初学者。我有一个字符串形式的日期范围。
var range="7-01-2018 VS 5-01-2019";
现在只是为了解释您而硬编码。但是也只会在以后以这种字符串形式出现。我必须提取2018并将其存储在某个变量中,例如startYear
,还必须提取2019并将其存储在endYear
变量中。这样以后我就可以比较它们并应用验证。
我尝试使用:
我的代码有效,但是问题是当选择两位数的日期时,字符串将改变其长度。例如:
7-01-2018 VS 25-01-2019
或17-01-2018 VS 5-01-2019
或27-01-2018 VS 25-01-2019
在这些情况下,start
和end
具有不同的含义。我现在应该怎么办。请帮助我。
我的方法是:
myValidator() {
range="7-01-2018 VS 5-01-2019";
startYear=range.substring(5,8);
endYear=range.substring(18,21);
if(endYear<startYear) {
console.log("Invalid range");
}
}
现在,我打算使用split()
。然后将字符串分成不同的部分,然后编写一些逻辑。但是split的问题在于两者之间有一个VS
。但是,对于separator
参数,我可以给-
符号。如果我错了,请纠正我。
答案 0 :(得分:2)
String.prototype.match
const range = '7-01-2018 VS 25-01-2019'
const [...range.matchAll(/\d{0,2}-\d{0,2}-(\d{0,4})/g)].map((date)=> date[1])
答案 1 :(得分:2)
你是正确的分裂会很好
myValidator() {
range="7-01-2018 VS 5-01-2019";
startYear=parseInt(range.split("VS")[0].split("-")[2])
endYear=parseInt(range.split("VS")[1].split("-")[2])
if(endYear<startYear) {
console.log("Invalid range");
}
}
答案 2 :(得分:2)
全部一行
navigation/mobile_navigation.xml
答案 3 :(得分:1)
使用split
,Date
和reduce
:
console.log("7-01-2018 VS 25-01-2019: ", checkRange("7-01-2018 VS 25-01-2019"));
console.log("7-01-2019 VS 25-01-2018: ", checkRange("7-01-2019 VS 25-01-2018"));
function checkRange(inputRange) {
const range = inputRange.split(" VS ");
const getYear = dateStr =>
new Date(dateStr.split("-").reverse().join("-")).getFullYear();
const years = range.reduce( (acc, val) => [...acc, getYear(val)], []);
return years[0] < years[1];
}
.as-console-wrapper { top: 0; max-height: 100% !important; }
答案 4 :(得分:1)
尝试此操作,将其作为输出的整数数组进行编辑
myValidator() {
range = "7-01-2018 VS 5-01-2019";
regEx = /\d{4}/g;
return (range.match(regEx).map(x => parseInt(x,10));
}
Output :
[ 2018, 2019 ]