protected override bool resolve(MatchingString ms) { int index = 0; bool IsContinue; string str; foreach (MatchingBlock mb in ms.GetAvaiableMatchingBlock()) { foreach (string a in m_aggregate) { IsContinue = true; index = 0; while (IsContinue) { str = ms.MatchingBlockGetString(mb); index = str.IndexOf(a, index); if (index > -1) { ms.AddMatchingBlock(this, mb, index, a.Length); if (m_IsSingleMatch) { return(false); } index++; } else { IsContinue = false; } } } } return(false); }
public ChineseAddress Parse(String str) { str = str.Replace(".", "").Replace(",", "").Replace(",", ""); MatchingString ms = new MatchingString(str); ms_headwordmatch.Process(ms); ChineseAddress ca = new ChineseAddress(); ca.source = str; ca.nation = ms.GetStringByWordmatch(ms_nationwordmatch); ca.province = ms.GetStringByWordmatch(ms_provincewordmatch); ca.city = ms.GetStringByWordmatch(ms_citywordmatch); ca.district = ms.GetStringByWordmatch(ms_districtwordmatch); ca.county = ms.GetStringByWordmatch(ms_countywordmatch); if (ms.GetStringByWordmatch(ms_streetwordmatch) != null) { ca.street = ms.GetStringByWordmatch(ms_streetwordmatch); } else { ca.street = ms.GetStringByWordmatch(ms_roadwordmatch); } ca.number = ms.GetStringByWordmatch(ms_numberwordmatch); ca.plaza = ms.GetStringByWordmatch(ms_plazawordmatch); ca.ip = ms.GetStringByWordmatch(ms_industrialparkwordmatch); ca.town = ms.GetStringByWordmatch(ms_townwordmatch); ca.village = ms.GetStringByWordmatch(ms_villagewordmatch); //ca.notes = ms.GetStringsByWordmatch(ms_notewordmatch); //ca.noises = ms.GetStringsByWordmatch(ms_noisecollector); return(ca); }
protected override bool resolve(MatchingString ms) { foreach (MatchingBlock mb in ms.GetAvaiableMatchingBlock()) { mb.wordmatch = this; } return(true); }
protected override bool resolve(MatchingString ms) { MatchCollection mc; foreach (MatchingBlock mb in ms.GetAvaiableMatchingBlock()) { if (m_featherfirst != null) { mc = m_featherfirst.Matches(ms.MatchingBlockGetString(mb)); foreach (Match m in mc) { if (m.Success) { ms.AddMatchingBlock(this, mb, m.Index, m.Length); if (m_IsSingleMatch) { return(false); } } } } if (m_feathersecond != null) { mc = m_feathersecond.Matches(ms.MatchingBlockGetString(mb)); foreach (Match m in mc) { if (m.Success) { ms.AddMatchingBlock(this, mb, m.Index, m.Length); if (m_IsSingleMatch) { return(false); } } } } if (m_featherthird != null) { mc = m_featherthird.Matches(ms.MatchingBlockGetString(mb)); foreach (Match m in mc) { if (m.Success) { ms.AddMatchingBlock(this, mb, m.Index, m.Length); if (m_IsSingleMatch) { return(false); } } } } } return(false); }
public void Process(MatchingString ms) { if (resolve(ms)) { done(ms); } else if (next != null) { next.Process(ms); } else { fail(ms); } }
protected override bool resolve(MatchingString ms) { return(false); }
protected abstract bool resolve(MatchingString ms);
protected void done(MatchingString ms) { }
protected void fail(MatchingString ms) { }