Javascript 如何检查数字是否在“more”之前;口头的;一串
给定一个Javascript 如何检查数字是否在“more”之前;口头的;一串,javascript,jquery,Javascript,Jquery,给定一个var-dateText输出以下任何一项: dateText = "12-5 November 17 May 1954"; dateText = "12 January 1976"; dateText = "12 22 March 1965"; 完成后: for(var i = 0; i < dateText.length; i++) { d += dateText[i] + ' '; } var words = d.replace("–", " ").replace("-"
var-dateText代码>输出以下任何一项:
dateText = "12-5 November 17 May 1954";
dateText = "12 January 1976";
dateText = "12 22 March 1965";
完成后:
for(var i = 0; i < dateText.length; i++) {
d += dateText[i] + ' ';
}
var words = d.replace("–", " ").replace("-", " ").replace(",", " ").replace("/", " ").split(' ');
words = $.grep(words, function(n, i){
return (n !== "" && n != null);
});
var array = words;
var newArray = array.filter(function(v){return v!==''});
for (const word of newArray) {
if (months.has(word)) {
localSpaceTime.Time.months.push(word);
} else if (+word < 32) {
localSpaceTime.Time.days.push(+word);
} else if (+word < 2200) {
localSpaceTime.Time.years.push(+word);
} else if (/\w+/.test(word)) {
localSpaceTime.Time.suffixes.push(word);
}
}
我们的结局是:
var localSpaceTime = {
Title : "",
Time : {
days : ["12", "5", "7"],
months : ["november", "May"],
years : ["1954"]
}
};
这很好,但是数据库
不知道第12个月、第5个月或第7个月属于哪个月
我的想法是:
检查数字是否位于文字字符串(即月份)之前,如果是这样:
英语目标:
Month: November
Days: 12, 5
Month: May
Days: 17
Year: 1954
我知道这有点像是一种AI
教脚本像人类一样思考,但这是可行的,只是问我在没有想法的情况下该怎么做
更新
另一种情况是:
dateText = "12-5 November 17 May 1954 CE";
var localSpaceTime = {
Title : "",
Time : {
days : ["12", "5", "7"],
months : ["november", "May"],
years : ["1954"],
suffix : ["CE"]
}
};
Month: November
Days: 12, 5
Month: May
Days: 17
Year: 1954
Suffix: CE
那么数组将是:
dateText = "12-5 November 17 May 1954 CE";
var localSpaceTime = {
Title : "",
Time : {
days : ["12", "5", "7"],
months : ["november", "May"],
years : ["1954"],
suffix : ["CE"]
}
};
Month: November
Days: 12, 5
Month: May
Days: 17
Year: 1954
Suffix: CE
然而,我们的最终目标是:
dateText = "12-5 November 17 May 1954 CE";
var localSpaceTime = {
Title : "",
Time : {
days : ["12", "5", "7"],
months : ["november", "May"],
years : ["1954"],
suffix : ["CE"]
}
};
Month: November
Days: 12, 5
Month: May
Days: 17
Year: 1954
Suffix: CE
日期也可以是
1 May 1954 22-5 April 1970
或
或
或
或
由于我所得到的结果,我认为这些可能性到此为止,因此解析它们就可以了。如果我们可以假设输入中唯一的非数字/空白/标点符号字符是月份名称,并且格式始终如您所述,然后,最简单的解决方案可能是对月份名称进行拆分。例如:
const input='1954年5月17日11月12日至5日';
console.log(input.split(/\s+([a-z]+)\s+//i));
//=>['12-5','11','17','5','1954']
你的最终目标是什么?似乎您正在使解析问题变得比需要的更困难。使用类似于:年->月->月->日的数组不是更容易吗?这将是很容易建立正确的,并获得信息的方式,你想要的,然后在回答你的算法pls,我会检查它,我出了主意,我会工作。可能需要一段时间。我已经有一段时间没有使用Javascript了。但是一个答案会出现:)@icecub ok man。直接出栈!对不起,是指康普顿,因为你的昵称:))等等,这看起来很有希望。这绝对是一个比我正在研究的更好的解决方案。所以我建议你用这个:)用一个suffix@downFast我明白,但你想要的超出了我的理解范围。我可能能够做到这一点,但我的方法是将所有对象分割成各种类型,并重建一个全新的数组。它会起作用,但这肯定是错误的做法。@icecub嗯,我明白了