读书人

~100分求一有关问题-截取字符串方法,

发布时间: 2012-03-25 20:55:16 作者: rapoo

~~~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);


if (m.Success)
{
Response.Write(m.Groups[1].Value.ToString()+ " <br/> ");
Response.Write(m.Groups[2].Value.ToString()+m.Groups[3].Value.ToString()+ " <br/> ");
Response.Write(m.Groups[4].Value.ToString() + " <br/> ");
Response.Write(m.Groups[5].Value.ToString());
}
[解决办法]
你在试试其他的
取出的日期自己转化下
[解决办法]
研究研究,看看还有没有其它方法
[解决办法]
string []aa={你要的关键字}
for(int i=0;i <aa.length();i++)

{string gsdsd=substring(0,indexof(aa[i]))
if (gsdsd!=null&&gsdsd.length> 0)
return;
}
[解决办法]
写一个正则表达式,用表达式来判断,那些信息是有用的然后把信息提取出来以后,再做数据转换。
[解决办法]
tds__609(学历代表过去、能力代表现在、学习力代表未来) ( )

string str = "2001/06--2006/09湖南中南林学院计算机科学与技术大专 ";
Match m = Regex.Match(str, @ "^(\d{4}/\d{2}--\d{4}/\d{2})(\w*?)(院|大学)(\w*?)(大专|本科) ", RegexOptions.Multiline);
if (m.Success)
{
Response.Write(m.Groups[1].Value.ToString()+ " <br/> ");
Response.Write(m.Groups[2].Value.ToString()+m.Groups[3].Value.ToString()+ " <br/> ");
Response.Write(m.Groups[4].Value.ToString() + " <br/> ");
Response.Write(m.Groups[5].Value.ToString());
}
-----------------

这个是高手,似乎已经实现了
[解决办法]
没有规律可用 !!!
正则也是没办法的 .....
就比如 !你说学历本科!!那我学校名字就叫 "本科 "2个字呢 ?
情况太多了!麻烦死了!
[解决办法]
一个正则不就OK了……
[解决办法]
目前 大学的全称好像都是以 院/大学 结尾的;
[解决办法]
LS说的对
有可能学校名字是 上海电力 上海金融 什么的
不能包括全部
[解决办法]
帮顶,学习
[解决办法]
如果是学校全称 好象匹配的全点
[解决办法]
www.xiaonei.com
有全国学校的名称 呵呵
[解决办法]
mark!!
[解决办法]
日期有规律SUBSTRING就OK了

把所有专业存到ARRAYLIST中,与当前的字符串对比,取出后,剩下的就是学校了
[解决办法]
substring()
[解决办法]
要想程序简单点就用 上面 正则的方法,但似乎有时候匹配不全

复杂点就用我刚刚提的那个想法吧,累点而已,但好像目前还没有BUG
[解决办法]
你截串的时候怎么不加个分割符...
[解决办法]
这个似乎也没有什么好办法吧..正如楼上各位所讲..情况太多了..用case来匹配也不是万能的..重新设计能否好点??
[解决办法]
不喜欢截取字符~~
这个要求挺无聊的~
------解决方案--------------------


中南校友UP下
[解决办法]
2001/06--2006/09湖南中南林学院计算机科学与技术大专


给个简单的方法拉:
2001/06--2006/09|湖南中南林学院计算机科学与技术大专
用“|”搁开 还不好取?
spilt!!! 不管 你前后的东西吧~
[解决办法]
忘说日期了`
把前段 取出的 再用“--” 披开成2个 日期型` 然后 ToDate!

不知道 我说得对不啊!
[解决办法]
日期好搞,后面的院校就太好解析了,没有唯一标准
[解决办法]
说错了 后面的院校就不好解析 没有唯一标准
[解决办法]
设计问题
[解决办法]
学习中,你是在为以前的烂设计买单
[解决办法]
indexof()读取“院”这个字的位置,然后再减去日期的长度,就是学院的长度了
然后在用substring(日期最后一位(8),日期的长度);
感觉就可以了吧!!我现在没有程序测试不了!

[解决办法]
帮顶~~
[解决办法]

[解决办法]
学习中,哈哈,中秋快乐
[解决办法]
有规律就有办法,没规律就没有办法
[解决办法]
貌似没有全能的办法——如果只用正则、substring和indexof这类方法的话。期待做搜索引擎的程序员来解答一下。我跟着学习:D

读书人网 >asp.net

热点推荐