首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

~100分帮忙实现解决下截取字符串的有关问题! 肯定给分哦,帮定也给啊

2012-01-10 
~~~100分帮忙实现解决下截取字符串的问题! 肯定给分哦,帮定也给啊~~string str 2005/03--2006/11:肇航

~~~100分帮忙实现解决下截取字符串的问题! 肯定给分哦,帮定也给啊~~
string str = "2005/03--2006/11:肇航科技有限公司\r\n所属行业:计算机软件 \r\n软件部 高级软件工程师 \r\njava高级高级软件工程师\r\n\r\n\r\n\r\n2004/07--2005/02:昌盛电脑工作室\r\n所属行业:文字媒体/出版 \r\n设计部 平面设计 \r\n平面设计,"

字符串如上面所述,我要分别取出 起始时间,公司名称(后面可能是2个以上的公司),所属行业,和后面的描述

请各位帮忙实现下,小弟感激不尽,谢谢

[解决办法]
//对整体进行拆分
int num = str.indexOf('\r\n\r\n\r\n\r\n');//这里的区分符号('\r\n\r\n\r\n\r\n')根据你的字符串决定,这种方法不是万能的。
string strPart1 = substring('str',0,num1); 
string strPart2 = substring('str',num1);

//對第一段進行截取
int numStart = strPart1.indexOf(':');//起始位置
int numEnd = strPart1.indexOf('\r\n');//中止位置
string companyName1 = substring(strPart1,numStart,numEnd-numStart);//截取

string companyName2 =...//類似上边的方法
[解决办法]
还是这个问题 ?这个难...............

[解决办法]
up
[解决办法]
string str = "2005/03--2006/11:肇航科技有限公司\r\n所属行业:计算机软件 \r\n软件部 高级软件工程师 \r\njava高级高级软件工程师\r\n\r\n\r\n\r\n2004/07--2005/02:昌盛电脑工作室\r\n所属行业:文字媒体/出版 \r\n设计部 平面设计 \r\n平面设计,";
Regex reg = new Regex(@"(\S+)--(\S+):([\s\S]*?)所属行业:([\s\S]*)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
MatchCollection ms = reg.Matches(str);
foreach(Match m in ms)
{
Response.Write("开始日期:"+m.Result("$1"));
Response.Write("结束日期:" + m.Result("$2"));
Response.Write("公司:"+m.Result("$3"));
Response.Write("行业:"+m.Result("$4"));
Response.Write("<BR>");
}
[解决办法]
补充:方法是这样的,不过对数值的准确性没有调试,你可以打断点自己把int型的数据作一些加减(可能会加1或者减1)。
在对第二个进行截取的时候,起始位置不是num,应该是num加上区分符号自身的长度。
[解决办法]
学习正则表达式吧,我看你这个肯定是要使用正则来解决的。
[解决办法]
学习...
[解决办法]
推荐一个易懂的教程: 正则表达式30分钟入门教程
http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
[解决办法]
indexOf()方法貌似是有截取的起始控制的参数的。你可以查一下msdn。
我的意思是,有几组数据的话,先把每组数据拆分开来。像你的str就可以用'\r\n\r\n\r\n\r\n'区分。
然后迭代,对每一个数据由可以用':'和'r\n'拆分到你要得数据段。
受楼上的启发,用arraylist循环是个不错的方法。

[解决办法]
string[] strP = str.Split("\r\n".ToCharArray());
然后分别取里面的值
[解决办法]
cpp2017
---------------
这个只是第一个的吧 后面的公司能想办法弄出来吗?
==============
看看运行结果,后面的公司有出来
[解决办法]
再怎么细分,分到什么程度?
[解决办法]
string str = "2005/03--2006/11:肇航科技有限公司\r\n所属行业:计算机软件 \r\n软件部 高级软件工程师 \r\njava高级高级软件工程师\r\n\r\n\r\n\r\n2004/07--2005/02:昌盛电脑工作室\r\n所属行业:文字媒体/出版 \r\n设计部 平面设计 \r\n平面设计,"; 

str = str.Replace("\r\n\r\n\r\n\r\n","|");
string[] arrlist = str.Split("|".ToCharArray());
foreach(string smstr in arrlist)
{
string[] info = smstr.Split("\r\n".ToCharArray());


起止时间 = info[0].Split(":".ToCharArray())[0];
公司名称 = info[0].Split(":".ToCharArray())[1];
所属行业 = info[1].Split(":".ToCharArray())[1];
描述 = info[2] + info[3];
}

[解决办法]
本来就有啊.
foreach (Match m in ms)
这个ms.Count = 2 你用ms[0]就是第一个ms[1]就是第二个.

你要得到第二个公司的名称就用 ms[1].Result("$3")
[解决办法]

[解决办法]
学习
[解决办法]
学习
[解决办法]
up
[解决办法]
学习。
[解决办法]
up
[解决办法]
正则就是好用..MARK一下.追捧一下...
[解决办法]
帮顶~~~
[解决办法]
正则还是要好好学地,很多的判断正则都可以轻松解决!
[解决办法]
顶上...
[解决办法]
正则效率不高,用indexof查找位置,然后substring截取,你贴的可能部分代码,要分析的话,需要针对页面分析。

测试一下论坛:

SQL code
Select * From Table
[解决办法]
C# code
test
[解决办法]
cpp2017 的方法只能取到一个啊
[解决办法]
学习...

热点排行