因为我是再对接接口是写的这个,对方接口串过来的数据带有空格,所以在下面方法里有去除字符串空格的方法
//调用方法
Dictionary<string, string> address = Address(" 四川省 达州市 布置县 民心佳园12栋27-9 ");
if(address.ContainsKey("province"))
{//省
Console.WriteLine(address["province"]);
}
if (address.ContainsKey("city"))
{//市
Console.WriteLine(address["city"]);
}
if (address.ContainsKey("country"))
{//县
Console.WriteLine(address["country"]);
}
if (address.ContainsKey("community"))
{//小区
Console.WriteLine(address["community"]);
}
//address,地址字符串
public static Dictionary<string,string> Address(string address)
{
string province = string.Empty;
string city = string.Empty;
string country = string.Empty;
string community = string.Empty;
Dictionary<string, string> addres = new Dictionary<string, string>();
int index = 0;
StringBuilder stringBuilder = new StringBuilder(); //创建StringBuilder类对象
string str = address;
char[] array = str.ToCharArray(); //把字符串转化成字符数组
IEnumerator enumerator = array.GetEnumerator(); //得到枚举器
while (enumerator.MoveNext()) //开始枚举
{
if ((char)enumerator.Current != ' ') //向StringBuilder类对象添加非空格字符
stringBuilder.Append(enumerator.Current.ToString());
}
string area = stringBuilder.ToString();
if (area.Contains("省"))
{
index = area.IndexOf("省");
province = area.Substring(0, index+1);
addres.Add("province", province);
}
if (area.Contains("市"))
{
if(!area.Contains("省"))
{
area = area.Substring(index);
}
else
{
area = area.Substring(index + 1);
}
index = area.IndexOf("市");
city = area.Substring(0, index+1);
addres.Add("city", city);
}
if (area.Contains("县") || area.Contains("区"))
{
index = area.LastIndexOf("市");
area = area.Substring(index + 1);
index = area.IndexOf("县");
if (index == -1)
{
index = area.IndexOf("区");
country = area.Substring(0, index+1);
addres.Add("country", country);
index = area.LastIndexOf("区");
community= area.Substring(index + 1);
if (string.IsNullOrWhiteSpace(community))
{
addres.Add("community", area.Remove(0, area.IndexOf("区") + 1));
}
else
{
addres.Add("community", community);
}
}
else
{
country = area.Substring(0, index+1);
addres.Add("country", country);
index = area.LastIndexOf("县");
community = area.Substring(index + 1);
addres.Add("community", community);
}
}
return addres;
}