using System; using System.Collections.Generic; using System.Text; namespace ryPrint.Mod { /// /// 智能分析地址 /// public class SmartAnalyAddr { public static string GetStr(string input, string point1, string point2, int iPos1, out int endPos, string defValue) { int iIndex = iPos1; endPos = -1; if (iPos1 < 0) { return defValue; } if (point1 != "") { iIndex = input.IndexOf(point1, iPos1); } if (iIndex == -1) { return defValue; } int iIndex2 = 0; if (point2 == "") { iIndex2 = input.Length; } else { iIndex2 = input.IndexOf(point2, iIndex + point1.Length); } string tmpStr = input; if (iIndex < iIndex2 && iIndex >= 0) { tmpStr = input.Substring(iIndex + point1.Length, iIndex2 - iIndex - point1.Length); endPos = iIndex2 + point2.Length; } else { return defValue; } return tmpStr; } public static AddrType AnalyAddr(string addr) { AddrType result = new AddrType(); int iPos = 0; int validPos = 0; result.Province = GetStr(addr, "", "省", 0, out iPos, "").Trim(); if (iPos >= 0) { validPos = iPos; } result.City = GetStr(addr, "", "市", validPos, out iPos, "").Trim(); if (iPos >= 0) { validPos = iPos; } result.County = GetStr(addr, "", "县", validPos, out iPos, "").Trim(); if (iPos >= 0) { validPos = iPos; } if (result.County != "") { result.County += "县"; } if (result.County=="") { result.County = GetStr(addr, "", "市", validPos, out iPos, "").Trim(); if (iPos >= 0) { validPos = iPos; } if (result.County != "") { result.County += "市"; } } if (result.County == "") { result.County = GetStr(addr, "", "区", validPos, out iPos, "").Trim(); if (iPos >= 0) { validPos = iPos; } if (result.County != "") { result.County += "区"; } } if(result.County=="") { if (addr.IndexOf("瑞安市") > 0) { result.City = "温州"; result.County = "瑞安市"; } } result.AddrDetail = addr.Substring(validPos); return result; } public static Tb_AddrType AnalyTaobaoAddr(string addr) { Tb_AddrType result = new Tb_AddrType(); int iPos = 0; int validPos = 0; result.Province = GetStr(addr, "", " ", 0, out iPos, ""); if (iPos >= 0) { validPos = iPos; } result.City = GetStr(addr, "", " ", validPos, out iPos, ""); if (iPos >= 0) { validPos = iPos; } result.County = GetStr(addr, "", " ", validPos, out iPos, ""); if (iPos >= 0) { validPos = iPos; } int r_k = addr.LastIndexOf(")"); int l_k = addr.LastIndexOf("("); if (r_k > l_k) { result.PCode = addr.Substring(l_k + 1, r_k - l_k-1); result.Addr = addr.Substring(0, l_k).Trim(','); } else { result.Addr = addr.Trim(','); } if (l_k > validPos) { result.AddrDetail = addr.Substring(validPos, l_k- validPos).Trim(','); } else { result.AddrDetail = addr.Substring(validPos).Trim(','); } return result; } } public class AddrType { /// /// 省份 /// public string Province { get; set; } = ""; /// /// 所在市 /// public string City { get; set; } = ""; /// /// 所在县区 /// public string County { get; set; } = ""; /// /// 详细地址 /// public string AddrDetail { get; set; } = ""; } public class Tb_AddrType { /// /// 省份 /// public string Province { get; set; } = ""; /// /// 所在市 /// public string City { get; set; } = ""; /// /// 所在县区 /// public string County { get; set; } = ""; /// /// 详细地址 /// public string AddrDetail { get; set; } = ""; /// /// /// public string Addr { get; set; } = ""; /// /// 邮编 /// public string PCode { get; set; } = ""; } }