大虾们,字符串解析求助!!
本人刚学习java不久,现遇到一个问题,问大虾们给与指导。那就是我要对一个有格式的字符串进行解析,如张三*男*28*旅游;预先的格式也是这样“姓名*性别*年龄*爱好”这样的格式,“*”为标记符 ;这样,就能对它进行正确解析并保存起来,这个也好做,问题来了,假如不是按给定的格式给你的字符串,该怎样解析并正确保存如“张三*游泳*三十岁 "。谢谢了先!
------解决方案--------------------不按给定格式?那是没辙,牵扯到语义判断
------解决方案--------------------要让 Java 去分析中文词义,并将它们分类,那属于人工智能。
------解决方案--------------------语义的判断好像 这方面比较难实现的
------解决方案--------------------可以保存但是不能保证正确~~
------解决方案--------------------姓名*性别*年龄*爱好
性别只有男和女,用字符串判断,先解析出性别,前面的就是姓名了,
然后解析出年龄(数字),后面的就是爱好了
------解决方案--------------------java现在还没这方面的知识,你可以用百家姓排除(呵呵,难啊!)
------解决方案--------------------做成UI界面~绑定数据和控件写入文件
------解决方案--------------------做东西肯定有规范,就是协议,如果格式不真确就给他个警告.
------解决方案--------------------想点别的办法,不要钻牛角尖~
------解决方案--------------------虽然如果广义的讲这个是人工只能方面的问题,但是如果片面的局限化以后也不无实现的可能。但是需要满足一个先决条件。
规定标实符:在字符串提供处,或者是字符串捕获处对字符串添加标实符处理,如:
(nianling)25,或者(xingbie)男
满足了如上条件后,可以按标实符揭短字符串,这样就可以实现你的需求了。
------解决方案--------------------错开的无非是内容顺序和数量,可以使程序对读取的字符串做一些人性化的判断
如:
1、带数字的一定是年龄。
2、带“岁”字的一定是年龄
3、包含“男”,“女”的一定是性别。
4、包含“游泳”、“足球”、“篮球”、“羽毛球”、“唱歌”。。。。等等的一定是爱好。
5、剩下的那个肯定是名字。
这样肯定还不能把所有的都分析出来,但大部分都可以解析。剩下的,就要人工去弥补,不过应该设剩下很少一部分了。
------解决方案--------------------老大,你的需要解析的字符串从哪里来啊?从来源上想点办法吧,比如在来源处把姓名前面加上一个字符N,年龄前面加上一个字符A,... 就成了“N张三*L游泳*A三十岁 ",这样不就容易解析了?
------解决方案--------------------在人工智能还达不到要求的情况下,还是要求一个格式化的数据源比较好,
错误少处理起来也方便。