XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

STHApplication

【MAUI】寄当家——安卓端交易管理系统

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Globalization;
using System.Text.Json;

namespace JiDangJia.Core;

public static class CityCatalog
{
    private static readonly Lazy<Dictionary<string,List<string>>> data=new(()=>
    {
        using var stream=typeof(CityCatalog).Assembly.GetManifestResourceStream("JiDangJia.Core.Data.china-cities.json")!;
        var rows=JsonSerializer.Deserialize<Dictionary<string,List<string>>>(stream)!;
        foreach(var name in new[]{"北京市","天津市","上海市","重庆市"})rows[name]=[name];
        rows["香港特别行政区"]=["香港"];rows["澳门特别行政区"]=["澳门"];
        rows["台湾省"]=["台北","台中","台南","高雄","新北","基隆","新竹","嘉义","桃园","宜兰","花莲","台东","澎湖","屏东","南投","彰化","云林","苗栗","新竹县","嘉义县","金门","连江"];
        return rows.OrderBy(p=>p.Key,Comparer<string>.Create((a,b)=>CultureInfo.GetCultureInfo("zh-CN").CompareInfo.Compare(a,b))).ToDictionary(p=>p.Key,p=>p.Value.Distinct().OrderBy(v=>v,Comparer<string>.Create((a,b)=>CultureInfo.GetCultureInfo("zh-CN").CompareInfo.Compare(a,b))).ToList());
    });
    public static IReadOnlyDictionary<string,List<string>> Provinces=>data.Value;
    public static string Normalize(string city)=>city.Trim().EndsWith('市')?city.Trim()[..^1]:city.Trim();
    public static string Province(string city)=>Provinces.FirstOrDefault(p=>p.Value.Any(v=>Normalize(v)==Normalize(city))).Key??"";
}