字符串中提取年月日,year、month、day,格式:year=2012,month=march-April、day=6-8

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串中提取年月日,year、month、day,格式:year=2012,month=march-April、day=6-8相关的知识,希望对你有一定的参考价值。

string date("Jan. 30 2012-Feb. 2 2012");
string date("Jan. 30-Feb. 2 2012");
string date("30 March-3 April 2003");
string date("6-8 May 2012");
string date("12 April 2012");
string date("Nov/Dec. 12 2012");
string date("April 12 2012");
string date("April 2012");
string date("2012");

比较繁。
先找有无 - 或 /, 有则分为2 个部分,无, 则是 1个部分。
然后 把两部分 的 字符串 抓出来。
字符串判断,字母开始 是 月,其它,4个数字是年,余下是 日。
用C++找 - 或 / :
size_t pos=0; pos = str.find("-");
if (pos==0) pos = str.find("/");

用C:
string str("Jan. 30 2012-Feb. 2 2012");
int main ()

int i;
int found= -1;
char s1[3][10],s2[3][10];
int n1=0,n2=0;
char cstr[40],c1[40],c2[40];

strcpy (cstr, str.c_str());
for (i=0;i < str.length(); i++) if ( cstr[i]=='-' || cstr[i]=='/')
found = i; cstr[i]=' ';

if (found > 0)
strcpy(c1,cstr); c1[found]='\0';
n1 = sscanf(c1,"%s %s %s",s1[0],s1[1],s1[2]);
strcpy(c2, &cstr[found+1]);
n2 = sscanf(c2,"%s %s %s",s2[0],s2[1],s2[2]);
else
n1 = sscanf(cstr,"%s %s %s",s1[0],s1[1],s1[2]);

前1 部分 的 字符串 在 s1[0],s1[1],s1[2] 中,年月日个数为 n1
后1 部分 的 字符串 在 s2[0],s2[1],s2[2] 中, 年月日个数为 n2
然后循环判断一下即可
取出的字符串是否正确,可以临时打印出来看:
for (i=0;i<n1;i++) cout << s1[i] << " ";
cout << endl;
if (found > 0) for (i=0;i<n2;i++) cout << s2[i] << " ";
cout << endl;
参考技术A 正则表达式匹配追问

呵呵,我已经匹配出来,但是总感觉不是很好。我是利用迭代器匹配的,想多仔细点

参考技术B - -追问

吼吼,其实我已经写出啦,就是想多听听别人的意见。

js中获取当天的时间的年月日

var d=new Date()

var day=d.getDate()

var month=d.getMonth() + 1

var year=d.getFullYear()

document.write(day + "." + month + "." + year)

document.write("<br /><br />")

document.write(year + "/" + month + "/" + day)

以上是关于字符串中提取年月日,year、month、day,格式:year=2012,month=march-April、day=6-8的主要内容,如果未能解决你的问题,请参考以下文章

从sqlserver数据库中提取日期,并把年月日分别截取出来

怎么获得dateTime的年月日并且拼接

pandas使用dt.year(month/day/hour/minute/second)函数抽取dataframe日期数据列对应的年月日时分秒信息

用C语言求:写一个函数,从给定的身份证号中提取出生年月信息,并按日期格式输出。

Java 年月日 日期加减

定义一个Date类,该类有year,month和day三个私有成员?