package com.qxueyou.scc.exercise.service.impl.parser; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; import com.qxueyou.scc.exercise.service.impl.Node; import com.qxueyou.scc.exercise.service.impl.ParseResult; import com.qxueyou.scc.exercise.service.impl.Parser; import com.qxueyou.scc.exercise.service.impl.node.Item; public class ItemAnalysisParser extends Parser { /** * ½âÎö×Ö·û´® */ private String analysisStr = "½âÎö"; /** * ½âÎö×Ö·û´®ÕýÔòģʽ */ private Pattern analysis = Pattern.compile(analysisStr); @Override public ParseResult parse(Node node, String str) { return parseAnalysis((Item)node,str); } /** * ½âÎö Item ²Î¿¼´ð°¸ * 1.½âÎö³öÀàËÆ *** ( ab ) ÕâÑùµÄ²Î¿¼´ð°¸ * 2.½«ÀàËÆ²Î¿¼´ð°¸ ( ab ) Ìæ»»³É ( ) * @param item * @param str * @return */ private ParseResult parseAnalysis(Item item, String str) { //ϰÌâÑ¡Ïî Matcher analysisMatch = analysis.matcher(str); //·µ»Ø if(!matchBegin(analysisMatch)){ return new ParseResult(false,ParseResult.STEP_CUR,null); } analysisMatch.reset(); if(analysisMatch.find()){ String group = analysisMatch.group(); String analysisS = str.substring(group.length()); if(StringUtils.isEmpty(item.getAnalysis())){ item.setAnalysis(beautyContent(analysisS)); }else{ item.setAnalysis(item.getAnalysis().concat(beautyContent(analysisS))); } } //20150907Ð޸ģº±¾À´·µ»Øtrue£¬Ã»ÓнâÎöµ½Ò»¸öÀàÐÍ£¬Å×µ½Éϲã return new ParseResult(false,ParseResult.STEP_CUR,null); } /** * È¥³ýÎı¾ÖжàÓà×Ö·û * @param content * @return */ private String beautyContent(String str){ String prefix = "£º:.¡£~¡¢¡¢£®£®"; String content = str; while(content.length()>0 && prefix.contains(content.substring(0, 1))){ content = content.substring(1); } return content; } }