如何在Javascript中拆分日期后的字符串



我有字符串"11/21/2018 11/27/2018 Thanksgiving Break",希望从中剪切两个日期,只检索日期(11/21/2018(和(11/27/2018(以及某种形式的数组中的标题。

您可以在替换组时匹配日期和其他内容,如下所示:

const str = "11/21/2018 11/27/2018 Thanksgiving Break";
const ans = [];
str.replace(/(d{2}/d{2}/d{4}) |(.+$)/g, (_, date, text) => {
ans.push(date || text);
});
console.log(ans);

您可以在此处查看regex组的匹配方式:https://regex101.com/r/IXW6Hv/1

您可以使用split方法。

let str = "11/21/2018 11/27/2018 Thanksgiving Break"
let endOfFirstDate = str.indexOf(" ")
let firstDate = str.substring(0, endOfFirstDate).trim()
let endOfSecondDate = str.indexOf(" ", endOfFirstDate + 1)
let secondDate = str.substring(endOfFirstDate, endOfSecondDate).trim()
let title = str.substring(endOfSecondDate, str.length).trim()

这通常使用正则表达式来完成:

const text = "11/21/2018 11/27/2018 Thanksgiving Break";
console.log(text.match(/([0-9/]+s){2}(.+)/)[2])

一种更基本的方法是将字符串拆分为单词,删除前两个单词,然后再次连接:

const text = "11/21/2018 11/27/2018 Thanksgiving Break";
console.log(text.split(" ").splice(2).join(" "))

如果你的日期总是dd/mm/yyyy风格,你可以试试这个来测试它。

let str = "11/21/2018 11/27/2018 Thanksgiving Break"
let tmp = str;
tmp = tmp.replace(/[d]+/[d]+/[d]+/g," ")
let arr = tmp.split(" ");
for(const item of arr){
	if(item){
		str = str.replace(item," ");
	}
}
for(const item of str.split(" ")){
	if(item){
		console.log(item);
	}
}

如果你的所有数据都是按空格分隔的,你可以尝试下面这样一个简单的方法:

let str = "11/21/2018 11/27/2018 Thanksgiving Break"
let arr = str.split(" ");
for(const item of arr){
	if(/[d]+/[d]+/[d]+/.test(item)){
		console.log(item);
	}
}

最新更新