日期:2014-05-18  浏览次数:20381 次

~~~100分求一问题--截取字符串方法, 马上兑现,分不够再加~~~
我截取出来的字符串是这样的
2001/06--2006/09湖南中南林学院计算机科学与技术大专.......   (中间无空格,专业后面可能还有字)
描述:
1.前面的日期2001/06--2006/09   能否截取下来,   而且变成DATATIME型,或YY-MM字符
2.后面的学校能否弄出来呢     还有专业,学历(后面还有其他的字,切不管他)

我想不出来什么好办法,也许用正则,可是我太菜了
希望各位高手帮个忙,如果可以,我单开贴,一次100!!     呵呵,因为着急,请理解,最后谢谢大家了~~中秋快乐~~

------解决方案--------------------
你多举个有代表性的例子或许好点

------解决方案--------------------
截取--之前7位和后面7位?
------解决方案--------------------
2001/06--2006/09湖南中南林学院计算机科学与技术大专.......

可以用substring() 方法,或 indexof();
------解决方案--------------------
2001/06--2006/09湖南中南林学院计算机科学与技术大专.......

可以用substring() 方法,或 indexof();

如:string s = "2001/06--2006/09湖南中南林学院计算机科学与技术大专 ";
string str = s.substring(1,16);

此时得到的就是你要的日期了!
------解决方案--------------------
日期和学历应该比较容易取到,
日期格式的字数是固定的,学历是几个固定的名词,日期可以直接SubString,学历用Indexof
,再研究学校和专业之间的规律吧,感觉这个比较麻烦
看高手的解决方法
------解决方案--------------------
这是没有规律可循的

只有一个办法,生产出这个字符串的人是个stupid,你先骂他一顿,然后让重新设计
------解决方案--------------------
湖南中南林学院计算机科学与技术大专.......
把专业和学校分开,本人的想法是需要存储专业的名称,有存储的专业的名称来判断字段中的专业是什么,然后取出来,相应的在取出专业的时候获得该专业所在的Indexof的位置,然后分割出来学校名称

感觉这样的效率太低
------解决方案--------------------
2001/06--2006/09湖南中南林学院计算机科学与技术大专......
如果后面不再有数字或/符号,可以取最后一个数字或者最后一个/加后两位啊
------解决方案--------------------
string Str = "2001/06--2006/09湖南中南林学院计算机科学与技术大专....... ";
string[] StrArray = Str.Split( '/ ');
DateTime Dt1 = DateTime.ParseExact(StrArray[0] + StrArray[1].Substring(0, 2), "yyyyMM ", System.Globalization.CultureInfo.InvariantCulture);
DateTime Dt2 = DateTime.ParseExact(StrArray[1].Substring(4, 4) + StrArray[2].Substring(0, 2), "yyyyMM ", System.Globalization.CultureInfo.InvariantCulture);
this.Response.Write(Dt1.ToString( "yyyy/MM ") + "-- " + Dt2.ToString( "yyyy/MM "));
------解决方案--------------------
只能用死方法啦

前面 截时间没什么好说的,直接取多少位,然后转换成时间就可以了

本科 什么也好取,肯定是2个字,直接拿掉就可以了

之后的字符则采取
string adbStr = "玉林师院计算机科学与技术 ";
int length = adbStr.Length;
int nameLength;//记录学院名称长度的
for(int i=0;i <length;i++)
{
string ceshi = adbStr.Substring(i,length);
switch(ceshi)
{
case "计算机科学与技术 ":
nameLength = i;
break;
-
-把学科名称列举出来比对
-
-
}
}
这样就可以实现取学校名称了

方法笨了点,但能实现
------解决方案--------------------
学校专业就重新设计了,你学校不一样字数就不一样根本没有规律怎么取?
------解决方案--------------------
所以用 case 循环比对, 因专业 名称 就那么几个,而且各个学校一样,拿去比对,对上了就是 ,然后就跳出这个 循环就可以了
------解决方案--------------------
没有具体的格式规则 怎么写啊?
------解决方案--------------------
string str = "2001/06--2006/09湖南中南林学院计算机科学与技术大专 ";
Match m = Regex.Match(str, @ "^(\d{4}/\d{2}--\d{4}/\d{2})(\w*?)(院|大学)(\w*?)(大专|本科) ", RegexOptions.Multiline);