日期:2014-05-20  浏览次数:20735 次

关于字符串解析的问题,有点难度
我要解析一个字符串,例如:string   str   =   "姓名张三性别男出生日期1980年11月19日居住地上海市工作年限一年以上户口上海目前年薪2万以下人民币地址虹口区大连西路500号 ";
我有一个关键字的配置文件
example.xml
<?xml   version= "1.0 "   encoding= "utf-8 "?>
<root>
    <configration   EName= "姓名 ">
        <Metadata> name </Metadata>
        <Metadata> 姓名 </Metadata>
        <Metadata> 姓?名 </Metadata>        
    </configration>
    <configration   EName= "性别 ">
        <Metadata> sex </Metadata>
        <Metadata> 性别 </Metadata>
    </configration>
    <configration   EName= "出生日期 ">
        <Metadata> 出生日期 </Metadata>
    </configration>
    <configration   EName= "居住地 ">
        <Metadata> 居住地 </Metadata>
    </configration>
    <configration   EName= "工作年限 ">
        <Metadata> 工作年限 </Metadata>
    </configration>
    <configration   EName= "户口 ">
        <Metadata> 户口 </Metadata>
    </configration>
    <configration   EName= "目前年薪 ">
        <Metadata> 目前年薪 </Metadata>
    </configration>
    <configration   EName= "地址 ">
        <Metadata> 地址 </Metadata>
    </configration>
</root>
-------------------------------------------------
我要得到的结果为:
张三

1980年11月19日
上海市
一年以上
上海
2万以下人民币
虹口区大连西路500号
--------------------------------------------------
这个字符串是不可知的,关键字也是允许用户配置的,而且这些关键字在字符串里可能存在,也可能不存在,可能存在的形式为: "姓名 ",也可能为: "name ",不管是 "姓名 "还是 "name ",他们同属于一个父节点,因此解析出来的结果是要归结在一起的(可能会同时出现,也可能只出现其中一种).就是说如果是解析中文的时候,遇见 "姓名 "知道后面跟的是名字,英文的话遇见 "name "知道后面是名字.还要一种情况就是关键字的位置是不固定的,可能关键字 "居住地 "在 "性别 "前面,等等,而且关键字要支持通配,比如说 "姓_名 ",就是要匹配开头是姓最后是名中间只允许出现一个的字符串也是关键字,来解析结果.

********************************************************
解决这个问题的朋友,单独开贴送500分.

------解决方案--------------------
这种处理方式不太好。最好是按照一定的格式存储。比如:如果有人姓名为“名XX”的,出来字符串为“姓名名XX”,这样就有多种解释:姓名:名XX 或者 姓名名:XX.

纯属个人意见。
------解决方案--------------------
你的文本字段顺序是按配置文件的吗?
------解决方案--------------------
兄弟把字符串格式搞好,主要点在这,不再于怎么解析.
姓名..性别..生日期..居住地..工作..户口..目前年薪..地址..
如果所有的串都象这种格式那就好办,如果不是....不好办
或者string[]传送
------解决方案--------------------
只要知道要找到节点名字,顺序什么的都无所谓。只需要进行节点遍历即可
------解决方案--------------------
根据配置生成个超大的正则分组获取吧
------解决方案--------------------
你不如说说为什么要这样子做吧

我觉得不必钻牛角尖的,或许有比你这种更好的办法
------解决方案--------------------
如果有重复的关键字,你想解析为什么结果呢?