小程序省市区县分割

最近在做小程序的过程中,有这么一个需求,需要将后台返回的地址,按省市区分割只取【XX区、XX县】部分,于是自己封装了一个方法,经自我测试可以分割所有正确的地址,包括自治区、群岛等;如有更好的建议,愿虚心求教!

思路:

  1、先将所有的省进行分割,包括自治区、行政区及市;

  2、再将所有的市分割,包括行政区、县、自治州、区、行政区划、盟;

  3、最后截取完省市的地址就市县、镇、乡之类的地址了。

最终测试的地址如下图:

小程序省市区县分割

 

代码部分:我是将公共方法封装在了util.js文件里,在需要的页面进行调用的;

//util.js
/**
 * 省市区、自治区分割
 */
function getArea(str) {
  let area = {};  //最终返回的地址
  let un_pro_str = '';  //去掉省以后的地址
  let un_city_str = ''; //去掉市以后的地址

  // 第一个区域(省)截取开始
  let _dominion = str.indexOf("自治区"); //自治区出现的位置(内蒙古自治区、广西壮族自治区、*自治区、宁夏回族自治区、**自治区、)
  let _district = str.indexOf('行政区');  //特别行政区出现的位置(香港特别行政区、澳门特别行政区)
  let _province = str.indexOf("省"); //省出现的位置
  let _city = str.indexOf('市');  //市出现的位置(北京市、天津市、上海市、重庆市)
  if (_dominion != -1) {  //有自治区
    area.Province = str.substring(0, _dominion + 3)
    un_pro_str = str.substr(_dominion + 3);
  } else if (_province != -1) { //有省
    area.Province = str.substring(0, _province + 1)
    un_pro_str = str.substr(_province + 1);
  } else if (_district != -1) { //有行政区
    area.Province = str.substring(0, _district + 3)
    un_pro_str = str.substr(_district + 3);
  } else if (_city != -1) { //有市
    area.Province = str.substring(0, _city + 1)
    un_pro_str = str.substr(_city + 1);
  }
  // console.log('去掉省以后的地址', un_pro_str)


  // 第二个区域(市)截取开始
  let _city1 = un_pro_str.indexOf('市'); //第二次出现市的位置
  let _district1 = un_pro_str.indexOf('行政区'); //特别行政区出现的位置
  let _county = un_pro_str.indexOf('县');  //县出现的位置
  let _state = un_pro_str.indexOf('自治州'); //自治州出现的位置
  let _region = un_pro_str.indexOf('区');  //区出现的位置
  let _zoning = un_pro_str.indexOf('行政区划');  //行政区划出现的位置
  let _alliance = un_pro_str.indexOf('盟');  //盟出现的位置
  if (_zoning != -1) { //行政区划
    area.City = un_pro_str.substring(0, _zoning + 4)
    un_city_str = un_pro_str.substr(_zoning + 4);
  } else if (_district1 != -1) { //行政区
    area.City = un_pro_str.substring(0, _district1 + 3)
    un_city_str = un_pro_str.substr(_district1 + 3);
  } else if (_state != -1) {  //自治州
    area.City = un_pro_str.substring(0, _state + 3)
    un_city_str = un_pro_str.substr(_state + 3);
  } else if (_alliance != -1) { //盟
    area.City = un_pro_str.substring(0, _alliance + 1)
    un_city_str = un_pro_str.substr(_alliance + 1);
  } else if (_city1 != -1) {  //市
    area.City = un_pro_str.substring(0, _city1 + 1)
    un_city_str = un_pro_str.substr(_city1 + 1);
  } else if (_region != -1) { //区
    area.City = un_pro_str.substring(0, _region + 1)
    un_city_str = un_pro_str.substr(_region + 1);
  } else if (_county != -1) { //县
    area.City = un_pro_str.substring(0, _county + 1)
    un_city_str = un_pro_str.substr(_county + 1);
  }
  // console.log('去掉省市以后的地址', un_city_str)


  // 去掉省市后,就剩下县了,所以直接赋值
  area.Country = un_city_str;

  return area;
}


module.exports = {
  getArea,
}
//pages/index/index.js  页面js
const util = require('../utils/util.js');    //引入公共方法,路径根据自己的项目填写
page({
    /**
   * 页面的初始数据
   */
    data: {},

    /**
   * 生命周期函数--监听页面加载
   */
    onl oad: function(options) {
        var area = util.getArea('内蒙古自治区呼和浩特市新城区');
        var area1 = util.getArea('山西省吕梁市柳林县');
        var area2 = util.getArea('上海市上海市普陀区');
        var area3 = util.getArea('澳门特别行政区澳门特别行政区澳门半岛');
        var area4 = util.getArea('吉林省延边朝鲜族自治州安图县');
        var area5 = util.getArea('湖北省恩施市家族苗族自治州恩施市');
        var area6 = util.getArea('湖北省省直辖县级行政区划神农架林区');
        var area7 = util.getArea('重庆市县忠县');
        var area8 = util.getArea('内蒙古自治区阿拉善盟阿拉善右旗');
        var area9 = util.getArea('北京市北京市昌平区');
        var area10 = util.getArea('*省南投县鱼池乡');
        var area11 = util.getArea('青海省海西蒙古族藏族自治州大柴旦行政委员会');
        var area12 = util.getArea('海南省儋州市华南热作学院');
        var area13 = util.getArea('海南省三沙市中沙群岛的岛礁及其海域中沙岛礁');
        var area14 = util.getArea('海南省三沙市西沙群岛');
        var area15 = util.getArea('广东省中山市火炬开发区');
        var area16 = util.getArea('广东省东莞市东莞生态园');
        var area17 = util.getArea('广东省东莞市松山湖管委会');
        var area18 = util.getArea('广东省东莞市石碣镇');
        var area19 = util.getArea('广东省东莞市东城街道');
        var area20 = util.getArea('内蒙古自治区包头市达尔罕茂明安联合旗');
        var area21 = util.getArea('河北省邢台市南宫市');
        var area22 = util.getArea('河北省保定市竞秀区');
    }
})
上一篇:NavigationDuplicated: Avoided redundant navigation to current location 解决重复路由错误


下一篇:解决 Avoided redundant navigation to current location: "/"