如何从一串单词中拉出一个字符串?

时间:2018-07-19 10:05:15

标签: javascript arrays

我有一个字符串“日期介于2018年3月至2018年6月”,或者该字符串可能类似于
“显示日期为2018年3月至2018年6月”。

所以我想将第一个月年(即2018年3月)存储在一个变量中,将下一个月年(即2018年6月)存储在另一个变量中。

月份可以是12月,10月等。

我想在 JavaScript 中编写代码,以将任意两个月的年份存储在2个单独的变量中。

任何帮助,将不胜感激。

4 个答案:

答案 0 :(得分:6)

您可以为此使用以下RegExp

const str = "Show me the date between March 2018 and June 2018";

const [start, end] = str.match(/((January|February|March|April|May|June|July|August|September|October|November|December) \d{4})/gi);

console.log(start, end);

答案 1 :(得分:1)

您可以使用正则表达式获取字符串的每个 month-year 对并将每个匹配项存储到数组中

代码如下:

var str = "Show me the date between March 2018, June 2018 and December 2019"; 
var res = str.match(/(\w*\s\d{4})/g);

console.log(res);

现在,您只需要遍历数组并对每个值做任何您想做的事。

希望对您有帮助。

答案 2 :(得分:0)

尽管您的问题写得不太正确,但以下代码可以正常工作:

const months = [
  'January',
  'February',
  'March',
  'April',
  'May',
  'June',
  'July',
  'August',
  'September',
  'October',
  'November',
  'December'
];

const reg = new RegExp(`(${months.join('|')})\\s[\\d]{4}`, 'gi');
const str = 'Date between March 2018 and June 2018';
const matches = str.match(reg).map((item) => item.split(' '));
console.log(matches)

答案 3 :(得分:-1)

您可以使用split函数分割字符串并提取有用的信息。

我已经在jsfiddler上为您编写了一个脚本。

请看看here

var temp="Date between March 2018 and June 2018";
var fields=temp.split(' ');
var date2=fields[fields.length-2] +" "+fields[fields.length-1];

var date1=fields[fields.length-5] +" "+fields[fields.length-4];
alert(date1);//March 2018
alert(date2);//June 2018