关于截取两个特定字符串之间的字符串问题!

mark620 2009-10-12 04:45:05
有下面一个字符串:

string str="简 历 个人信息 姓 名: 张三 性 别: 男 出生日期: 1984年6月20日 居 住 地: 北京 工作年限: 三年以上 电子邮件: admin@163.com 手 机: 086- 15864321500 目前年薪: 6-8万人民币.... ";


如何解析成下面的形式:
基本个人信息
姓名: 张三 性别: 男
出生年月: 1984年06月20日 工作经验: 3年
手机 15864321500
所在地区: 北京
电子邮箱: admin@163.com
目前年薪: 6-8万人民币

把str中的姓名、性别等分别解析然后显示出来。

Thanks!~~

...全文
1401 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjh524205438 2012-02-28
  • 打赏
  • 举报
回复
没规律也能分割啊

好厉害啊
wuhaiyangdh 2009-10-14
  • 打赏
  • 举报
回复
帮你顶,还是得有规律才好普遍来处理
mark620 2009-10-14
  • 打赏
  • 举报
回复
自己顶。快做好了。。。
十八道胡同 2009-10-13
  • 打赏
  • 举报
回复
没正则很好的,客客的正则没错。
规律,不要紧。
wcqqq 2009-10-13
  • 打赏
  • 举报
回复
http://bbs3.chinaunix.net/viewthread.php?tid=1592281&extra=&page=1
a5796489 2009-10-13
  • 打赏
  • 举报
回复
没规律用正则也白搭啊
fable说 2009-10-13
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 leehomwong 的回复:]
要截取的空两格行不。。
[/Quote]
若这些字符串中有空格呢?
mark620 2009-10-13
  • 打赏
  • 举报
回复
谢谢大家关注!

我现在正在尝试用IndexOf来处理,收到了一些效果。

30楼的哥们儿那种方法还不错。稍候试试看。

大家如果有更好的方法请进来讨论一下,谢谢!
hinroe 2009-10-13
  • 打赏
  • 举报
回复
正则太麻烦了,就用F19firesea(绝版樱木)的方法就很好
lianghengchao 2009-10-12
  • 打赏
  • 举报
回复
始终关注!
yyz985 2009-10-12
  • 打赏
  • 举报
回复

<script>
var str="简 历 个人信息 姓 名: 张三 性 别: 男 出生日期: 1984年6月20日 居 住 地: 北京 工作年限: 三年以上 电子邮件: admin@163.com 手 机: 086- 15864321500 目前年薪: 6-8万人民币.... ";
var reg = new RegExp("\\s(.{3,5}:)[ ]?(.*?)[ ]((.{3,5}:)|$)");
var i = 0;
var collection = [];
while(true)
{
str = str.substr(i);
var m = str.match(reg, 20);
if(m == null) break;
i = m.lastIndex - m[3].length - 1;
collection.push({Key: m[1], Value: m[2]});
collection[m[1]] = m[2]
}
var s = ""
for(var i = 0;i < collection.length; i++)
{
var item = collection[i];
s += item.Key + (item.Key.length > 4 ? "\t" : "\t\t") + item.Value + "\r\n";
}
alert(collection.length + "个参数\r\n" + s);
alert(collection["手 机:"]);
window.close();
</script>
yyz985 2009-10-12
  • 打赏
  • 举报
回复
<script>
var str="简 历 个人信息 姓 名: 张三 性 别: 男 出生日期: 1984年6月20日 居 住 地: 北京 工作年限: 三年以上 电子邮件: admin@163.com 手 机: 086- 15864321500 目前年薪: 6-8万人民币.... ";
var reg = new RegExp("\\s(.{3,4}:)[ ]?(.*?)[ ]((.{3,5}:)|$)");
var i = 0;
var c = 0;
while(true)
{
str = str.substr(i);
var m = str.match(reg, 20);
if(m == null) break;
i = m.lastIndex - m[3].length - 1;
c++;
alert(m[1] + "" + m[2]);
}
alert(c + "个参数");
</script>
-过客- 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fendy5201 的回复:]
其实我之前就发过一个帖子,都没回答上来,看看这个链接:
http://topic.csdn.net/u/20091012/14/a9f9054c-9c92-4792-9188-e69410f057b9.html[/Quote]

看了下www.unsbiz.com这个网站,没注册,所以没看到具体实现如何,不过看到它只能处理51job的简历,那估计还是根据固定站点的规律进行解析的

没太注意51job的是否很有规律,下次搜简历时注意下

如果是比较有规律的,可以通过正则等多种方式处理,不过通常效率不是很高

string str = "简 历 个人信息 姓 名: 张三 性 别: 男 出生日期: 1984年6月20日 居 住 地: 北京 工作年限: 三年以上 电子邮件: admin@163.com 手 机: 086- 15864321500 目前年薪: 6-8万人民币.... ";
Regex reg = new Regex(@"(?is)姓 名:(?<name>(?:(?!性 别:).)*)性 别:(?<sex>(?:(?!出生日期:).)*)出生日期: (?<bir>(?:(?!居 住 地:).)*)居 住 地:(?<add>(?:(?!工作年限:).)*)工作年限:(?<exp>(?:(?!电子邮件:).)*)电子邮件:(?<email>(?:(?!手 机:).)*)手 机:(?<pho>(?:(?!目前年薪:).)*)目前年薪:(?<sal>.*)");
MatchCollection mc = reg.Matches(str);
foreach (Match m in mc)
{
richTextBox2.Text += "姓 名:" + m.Groups["name"].Value.Trim() + "\n";
richTextBox2.Text += "性 别:" + m.Groups["sex"].Value.Trim() + "\n";
richTextBox2.Text += "出生日期:" + m.Groups["bir"].Value.Trim() + "\n";
richTextBox2.Text += "居 住 地:" + m.Groups["add"].Value.Trim() + "\n";
richTextBox2.Text += "工作年限:" + m.Groups["exp"].Value.Trim() + "\n";
richTextBox2.Text += "电子邮件:" + m.Groups["email"].Value.Trim() + "\n";
richTextBox2.Text += "手 机:" + m.Groups["pho"].Value.Trim() + "\n";
richTextBox2.Text += "目前年薪:" + m.Groups["sal"].Value.Trim() + "\n";
}
jianshao810 2009-10-12
  • 打赏
  • 举报
回复
没规律啊。。。怎样分割?为什么要分割。自己想分割的话应该定义些有规律的
FallenAngel 2009-10-12
  • 打赏
  • 举报
回复
假设文本字段不会有先后顺序的变化的话,可以这样


string str = "简 历 个人信息 姓 名: 张三 性 别: 男 出生日期: 1984年6月20日 居 住 地: 北京 工作年限: 三年以上 电子邮件: admin@163.com 手 机: 086- 15864321500 目前年薪: 6-8万人民币.... ";

Regex r = new Regex(@"(姓\s*名):\s*(.+)\s*(性\s*别):\s*(.+)\s*(出\s*生\s*日\s*期):\s*(.+)\s*(居\s*住\s*地):\s*(.+)\s*(工\s*作\s*年\s*限):\s*(.+)\s*(电\s*子\s*邮\s*件):\s*(.+)\s*(手\s*机):\s*(.+)\s*(目\s*前\s*年\s*薪):\s*(.+)\s*");

var m = r.Matches(str);

for (int i = 0, l = m.Count; i < l; ++i)
{
System.Console.WriteLine(String.Format("{0}--{1}", i, m[i].Value));
for (int j = 0, p = m[i].Groups.Count; j < p; ++j)
{
var g = m[i].Groups[j];

System.Console.WriteLine(String.Format("\t{0}--{1}", j, g.Value));
}
}

System.Console.ReadKey();
kingcsx666 2009-10-12
  • 打赏
  • 举报
回复
藐视没有楼主没有设置分隔符,没有规律,怎么区分?

方案:a设置分割符,用户不能录入分隔符;
b用数组
c其他
24K純帥 2009-10-12
  • 打赏
  • 举报
回复
要截取的空两格行不。。
yagebu1983 2009-10-12
  • 打赏
  • 举报
回复
只能根据字符分割了。。。
龙宜坡 2009-10-12
  • 打赏
  • 举报
回复
比较怪异的一说!

这个是http://www.unsbiz.com/job/onekey.jsp中的一段代码,看样子应该用的是Fckeditor类似的东西实现的
文本框!

<div id="iOneLabelBox1">
<textarea name="jobResumeContent" cols="120" rows="20" onblur="javascript:this.value=trim(this.value);"></textarea>
</div>


从HTML页面复制文字到Fckeditor文本框后连同HTML语言元素等东西也一并复制了进去。

以下是我从页面上随便复制的一段到Fckeditor中,Fckeditor连同HTML信息一并取了过来

<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td width="6"> </td>
<td width="97" align="left">个人信息</td>
<td width="631"> </td>
</tr>
</tbody>
</table>
<table cellspacing="0" cellpadding="0" border="0" style="width: 700px; line-height: 22px;" class="v_table02">
<tbody>
<tr>
<td valign="top" style="width: 110px;" class="weight110">姓        名:</td>
<td valign="top" style="width: 190px;" class="weight190">某某</td>
<td valign="top" style="width: 110px;" class="weight110">性        别:</td>
<td valign="top" style="width: 190px;" class="weight190">男</td>
</tr>
<tr>
<td valign="top">出生日期:</td>
<td valign="top">1982年9月24日</td>
<td valign="top">居  住  地:</td>
<td valign="top">西安</td>
</tr>
<tr>
<td valign="top">工作年限:</td>
<td valign="top">五年以上</td>
<td valign="top">电子邮件:</td>
<td valign="top">fasdf@dfds.com</td>
</tr>
<tr>
<td valign="top">手        机:</td>
<td valign="top" colspan="3">086- 15529602002</td>
</tr>
<tr>
<td valign="top">目前年薪:</td>
<td valign="top" colspan="3">5-10万 人民币</td>
</tr>
<tr>
<td valign="top">户        口:</td>
<td valign="top" colspan="4">陕西</td>
</tr>
<tr>
<td valign="top">地        址:</td>
<td valign="top" colspan="4">陕西省西安市雁塔区</td>
</tr>
<tr>
<td valign="top">邮        编:</td>
<td valign="top" colspan="4">710075</td>
</tr>
<tr>
<td valign="top">个人主页:</td>
<td valign="top" colspan="4" style="">http://</td>
</tr>
<tr>
<td valign="top" colspan="5" class="dotline height5"> </td>
</tr>
<tr>
<td valign="top">基本工资:</td>
<td valign="top" colspan="4">8万/年</td>
</tr>
</tbody>
</table>



可见,有可能是根据HTML信息进行分析的!
SK_Aqi 2009-10-12
  • 打赏
  • 举报
回复
这些固定字符,可以直接来用就可以了,直接截取,就ok
否则没规律,即使它是正则
加载更多回复(22)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧