github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/vin-code/misc/vehicle_region.go (about) 1 package misc 2 3 // 洲名 4 const ( 5 AfricaStr = "Africa" 6 AsiaStr = "Asia" 7 EuropeStr = "Europe" 8 NorthAmericaStr = "North America" 9 OceaniaStr = "Oceania" 10 SouthAmericaStr = "South America" 11 12 ContinentUnknownStr = "Unknown continent" 13 ) 14 15 // 国名 16 const ( 17 SouthAfricaNm = "South Africa" 18 IvoryCoastNm = "Ivory Coast" 19 AfricaNm = "Africa" 20 AngolaNm = "Angola" 21 KenyaNm = "Kenya" 22 TanzaniaNm = "Tanzania" 23 BeninNm = "Benin" 24 MadagascarNm = "Madagascar" 25 TunisiaNm = "Tunisia" 26 EgyptNm = "Egypt" 27 MoroccoNm = "Morocco" 28 ZambiaNm = "Zambia" 29 GhanaNm = "Ghana" 30 MozambiqueNm = "Mozambique" 31 NigeriaNm = "Nigeria" 32 JapanNm = "Japan" 33 SriLankaNm = "SriLanka" 34 IsraelNm = "Israel" 35 SKoreaNm = "SKorea" 36 KazakhstanNm = "Kazakhstan" 37 ChinaNm = "China" 38 IndiaNm = "India" 39 IndonesiaNm = "Indonesia" 40 ThailandNm = "Thailand" 41 IranNm = "Iran" 42 PakistanNm = "Pakistan" 43 TurkeyNm = "Turkey" 44 PhilippinesNm = "Philippines" 45 SingaporeNm = "Singapore" 46 MalaysiaNm = "Malaysia" 47 AsiaNm = "Asia" 48 UAENm = "UAE" 49 TaiwanNm = "Taiwan" 50 VietnamNm = "Vietnam" 51 SaudiArabiaNm = "Saudi Arabia" 52 UnitedKingdomNm = "United Kingdom" 53 EGermanyNm = "EGermany" 54 PolandNm = "Poland" 55 LatviaNm = "Latvia" 56 SwitzerlandNm = "Switzerland" 57 CzechRepNm = "Czech Rep" 58 HungaryNm = "Hungary" 59 PortugalNm = "Portugal" 60 DenmarkNm = "Denmark" 61 IrelandNm = "Ireland" 62 RomaniaNm = "Romania" 63 SlovakNm = "Slovak" 64 AustriaNm = "Austria" 65 FranceNm = "France" 66 SpainNm = "Spain" 67 SerbiaNm = "Serbia" 68 CroatiaNm = "Croatia" 69 EstoniaNm = "Estonia" 70 GermanyNm = "Germany" 71 BulgariaNm = "Bulgaria" 72 GreeceNm = "Greece" 73 NetherlandsNm = "Netherlands" 74 USSRNm = "USSR" 75 LuxembourgNm = "Luxembourg" 76 RussiaNm = "Russia" 77 BelgiumNm = "Belgium" 78 FinlandNm = "Finland" 79 MaltaNm = "Malta" 80 SwedenNm = "Sweden" 81 NorwayNm = "Norway" 82 BelarusNm = "Belarus" 83 UkraineNm = "Ukraine" 84 ItalyNm = "Italy" 85 SloveniaNm = "Slovenia" 86 LithuaniaNm = "Lithuania" 87 EuropeNm = "Europe" 88 CanadaNm = "Canada" 89 MexicoNm = "Mexico" 90 UnitedStatesNm = "UnitedStates" 91 AustraliaNm = "Australia" 92 NewZealandNm = "NewZealand" 93 OceaniaNm = "Oceania" 94 ArgentinaNm = "Argentina" 95 ChileNm = "Chile" 96 EcuadorNm = "Ecuador" 97 PeruNm = "Peru" 98 VenezuelaNm = "Venezuela" 99 SouthAmericaNm = "SouthAmerica" 100 ColombiaNm = "Colombia" 101 ParaguayNm = "Paraguay" 102 UruguayNm = "Uruguay" 103 TrinidadTobagoNm = "Trinidad & Tobago" 104 BrazilNm = "Brazil" 105 SANm = "SA" 106 107 CountryUnknownNm = "Unknown Country" 108 ) 109 110 // 获取洲属 111 func GetVINContinent(vin string) string { 112 r := vin[0] 113 switch { 114 case r >= 'A' && r <= 'H': 115 return AfricaStr 116 case r >= 'J' && r <= 'R': 117 return AsiaStr 118 case r >= 'S' && r <= 'Z': 119 return EuropeStr 120 case r >= '1' && r <= '5': 121 return NorthAmericaStr 122 case r >= '6' && r <= '7': 123 return OceaniaStr 124 case r == '8' || r == '9' || r == '0': 125 return SouthAmericaStr 126 default: 127 return ContinentUnknownStr 128 } 129 } 130 131 func GetAfricaCountry(vin string) string { 132 nm1 := vin[0] 133 nm2 := vin[1] 134 switch { 135 case nm1 == 'A' && (nm2 >= 'A' && nm2 <= 'H'): 136 return SouthAfricaNm 137 case nm1 == 'A' && (nm2 >= 'J' && nm2 <= 'N'): 138 return IvoryCoastNm 139 case nm1 == 'B' && (nm2 >= 'A' && nm2 <= 'E'): 140 return AngolaNm 141 case nm1 == 'C' && (nm2 >= 'A' && nm2 <= 'E'): 142 return BeninNm 143 case nm1 == 'D' && (nm2 >= 'A' && nm2 <= 'E'): 144 return EgyptNm 145 case nm1 == 'E' && (nm2 >= 'A' && nm2 <= 'E'): 146 return GhanaNm 147 case nm1 == 'F' && (nm2 >= 'A' && nm2 <= 'E'): 148 return IndiaNm 149 case nm1 == 'B' && (nm2 >= 'F' && nm2 <= 'K'): 150 return KenyaNm 151 case nm1 == 'C' && (nm2 >= 'F' && nm2 <= 'K'): 152 return MadagascarNm 153 case nm1 == 'D' && (nm2 >= 'F' && nm2 <= 'K'): 154 return MoroccoNm 155 case nm1 == 'E' && (nm2 >= 'F' && nm2 <= 'K'): 156 return MozambiqueNm 157 case nm1 == 'F' && (nm2 >= 'F' && nm2 <= 'K'): 158 return NigeriaNm 159 case nm1 == 'B' && (nm2 >= 'L' && nm2 <= 'R'): 160 return TanzaniaNm 161 case nm1 == 'C' && (nm2 >= 'L' && nm2 <= 'R'): 162 return TunisiaNm 163 case nm1 == 'D' && (nm2 >= 'L' && nm2 <= 'R'): 164 return ZambiaNm 165 default: 166 return AfricaNm 167 } 168 } 169 170 func GetAsiaCountry(vin string) string { 171 nm1 := vin[0] 172 nm2 := vin[1] 173 switch { 174 case nm1 == 'J': 175 return JapanNm 176 case nm1 == 'L': 177 return ChinaNm 178 case nm1 == 'K' && (nm2 >= 'A' && nm2 <= 'E'): 179 return SriLankaNm 180 case nm1 == 'M' && (nm2 >= 'A' && nm2 <= 'E'): 181 return IndiaNm 182 case nm1 == 'N' && (nm2 >= 'A' && nm2 <= 'E'): 183 return IranNm 184 case nm1 == 'P' && (nm2 >= 'A' && nm2 <= 'E'): 185 return PhilippinesNm 186 case nm1 == 'R' && (nm2 >= 'A' && nm2 <= 'E'): 187 return UAENm 188 case nm1 == 'K' && (nm2 >= 'F' && nm2 <= 'K'): 189 return IsraelNm 190 case nm1 == 'M' && (nm2 >= 'F' && nm2 <= 'K'): 191 return IndonesiaNm 192 case nm1 == 'N' && (nm2 >= 'F' && nm2 <= 'K'): 193 return PakistanNm 194 case nm1 == 'P' && (nm2 >= 'F' && nm2 <= 'K'): 195 return SingaporeNm 196 case nm1 == 'R' && (nm2 >= 'F' && nm2 <= 'K'): 197 return TaiwanNm 198 case nm1 == 'K' && (nm2 >= 'L' && nm2 <= 'R'): 199 return SKoreaNm 200 case nm1 == 'M' && (nm2 >= 'L' && nm2 <= 'R'): 201 return ThailandNm 202 case nm1 == 'N' && (nm2 >= 'L' && nm2 <= 'R'): 203 return TurkeyNm 204 case nm1 == 'P' && (nm2 >= 'L' && nm2 <= 'R'): 205 return MalaysiaNm 206 case nm1 == 'R' && (nm2 >= 'L' && nm2 <= 'R'): 207 return VietnamNm 208 case nm1 == 'R' && ((nm2 >= 'S' && nm2 <= 'Z') || (nm2 >= '0' && nm2 <= '9')): 209 return SaudiArabiaNm 210 default: 211 return AsiaNm 212 } 213 } 214 func GetEuropeCountry(vin string) string { 215 nm1 := vin[0] 216 nm2 := vin[1] 217 switch { 218 case nm1 == 'S' && (nm2 >= 'A' && nm2 <= 'M'): 219 return UnitedKingdomNm 220 case nm1 == 'S' && (nm2 >= 'N' && nm2 <= 'T'): 221 return EGermanyNm 222 case nm1 == 'S' && (nm2 >= 'U' && nm2 <= 'Z'): 223 return PolandNm 224 case nm1 == 'S' && (nm2 >= '1' && nm2 <= '4'): 225 return LatviaNm 226 case nm1 == 'T' && (nm2 >= 'A' && nm2 <= 'H'): 227 return SwitzerlandNm 228 case nm1 == 'T' && (nm2 >= 'J' && nm2 <= 'P'): 229 return CzechRepNm 230 case nm1 == 'T' && (nm2 >= 'R' && nm2 <= 'V'): 231 return HungaryNm 232 case nm1 == 'T' && ((nm2 >= 'W' && nm2 <= 'Z') || nm2 == '1'): 233 return PortugalNm 234 case nm1 == 'U' && (nm2 >= 'H' && nm2 <= 'M'): 235 return DenmarkNm 236 case nm1 == 'U' && (nm2 >= 'N' && nm2 <= 'T'): 237 return IrelandNm 238 case nm1 == 'U' && (nm2 >= 'U' && nm2 <= 'Z'): 239 return RomaniaNm 240 case nm1 == 'U' && (nm2 >= '5' && nm2 <= '7'): 241 return SlovakNm 242 case nm1 == 'V' && (nm2 >= 'A' && nm2 <= 'E'): 243 return SlovakNm 244 case nm1 == 'V' && (nm2 >= 'F' && nm2 <= 'R'): 245 return AustriaNm 246 case nm1 == 'V' && (nm2 >= 'F' && nm2 <= 'R'): 247 return FranceNm 248 case nm1 == 'V' && (nm2 >= 'S' && nm2 <= 'W'): 249 return SpainNm 250 case nm1 == 'V' && ((nm2 >= 'X' && nm2 <= 'Z') || (nm2 >= '1' || nm2 <= '2')): 251 return SerbiaNm 252 case nm1 == 'V' && (nm2 >= '3' && nm2 <= '5'): 253 return CroatiaNm 254 case nm1 == 'V' && ((nm2 >= '6' && nm2 <= '9') || (nm2 == '0')): 255 return EstoniaNm 256 case nm1 == 'W': 257 return GermanyNm 258 case nm1 == 'X' && (nm2 >= 'A' && nm2 <= 'E'): 259 return BulgariaNm 260 case nm1 == 'X' && (nm2 >= 'F' && nm2 <= 'K'): 261 return GreeceNm 262 case nm1 == 'X' && (nm2 >= 'L' && nm2 <= 'R'): 263 return NetherlandsNm 264 case nm1 == 'X' && (nm2 >= 'S' && nm2 <= 'W'): 265 return USSRNm 266 case nm1 == 'X' && ((nm2 >= 'X' && nm2 <= 'Z') || (nm2 == '1' || nm2 == '2')): 267 return LuxembourgNm 268 case nm1 == 'X' && ((nm2 >= '3' && nm2 <= '9') || (nm2 == '0')): 269 return RussiaNm 270 case nm1 == 'Y' && (nm2 >= 'A' && nm2 <= 'E'): 271 return BelgiumNm 272 case nm1 == 'Y' && (nm2 >= 'F' && nm2 <= 'K'): 273 return FinlandNm 274 case nm1 == 'Y' && (nm2 >= 'L' && nm2 <= 'R'): 275 return MaltaNm 276 case nm1 == 'Y' && (nm2 >= 'S' && nm2 <= 'W'): 277 return SwedenNm 278 case nm1 == 'Y' && ((nm2 >= 'X' && nm2 <= 'Z') || (nm2 == '1' || nm2 == '2')): 279 return NorwayNm 280 case nm1 == 'Y' && (nm2 >= '3' && nm2 <= '5'): 281 return BelarusNm 282 case nm1 == 'Y' && ((nm2 >= '6' && nm2 <= '9') || (nm2 == '0')): 283 return UkraineNm 284 case nm1 == 'Z' && (nm2 >= 'A' && nm2 <= 'R'): 285 return ItalyNm 286 case nm1 == 'Z' && ((nm2 >= 'X' && nm2 <= 'Z') || (nm2 == '1' || nm2 == '2')): 287 return SloveniaNm 288 case nm1 == 'Z' && (nm2 >= '3' && nm2 <= '5'): 289 return LithuaniaNm 290 default: 291 return EuropeStr 292 } 293 } 294 295 func GetNorthAmericaCountry(vin string) string { 296 nm1 := vin[0] 297 switch nm1 { 298 case '1', '4', '5': 299 return UnitedStatesNm 300 case '2': 301 return CanadaNm 302 case '3': 303 return MexicoNm 304 default: 305 return "" 306 } 307 } 308 309 func GetOceaniaCountry(vin string) string { 310 nm1 := vin[0] 311 nm2 := vin[1] 312 switch { 313 case nm1 == '6' && (nm2 >= 'A' && nm2 <= 'W'): 314 return AustriaNm 315 case nm1 == '7' && (nm2 >= 'A' && nm2 <= 'E'): 316 return NewZealandNm 317 default: 318 return OceaniaNm 319 } 320 } 321 322 func GetSouthAmericaCountry(vin string) string { 323 nm1 := vin[0] 324 nm2 := vin[1] 325 switch { 326 case nm1 == '8' && (nm2 >= 'A' && nm2 <= 'E'): 327 return ArgentinaNm 328 case nm1 == '8' && (nm2 >= 'F' && nm2 <= 'K'): 329 return ChileNm 330 case nm1 == '8' && (nm2 >= 'L' && nm2 <= 'R'): 331 return EcuadorNm 332 case nm1 == '8' && (nm2 >= 'S' && nm2 <= 'W'): 333 return PeruNm 334 case nm1 == '8' && ((nm2 >= 'X' && nm2 <= 'Z') || (nm2 == '1' || nm2 == '2')): 335 return VenezuelaNm 336 case nm1 == '9' && (nm2 >= 'A' && nm2 <= 'E'): 337 return BrazilNm 338 case nm1 == '9' && (nm2 >= 'F' && nm2 <= 'K'): 339 return ColombiaNm 340 case nm1 == '9' && (nm2 >= 'L' && nm2 <= 'R'): 341 return ParaguayNm 342 case nm1 == '9' && (nm2 >= 'S' && nm2 <= 'W'): 343 return UruguayNm 344 case nm1 == '9' && ((nm2 >= 'X' && nm2 <= 'Z') || (nm2 == '1' || nm2 == '2')): 345 return TrinidadTobagoNm 346 case nm1 == '9' && (nm2 >= '3' && nm2 <= '9'): 347 return BrazilNm 348 case nm1 == '9' && (nm2 == '0'): 349 return SANm 350 default: 351 return SouthAmericaNm 352 } 353 } 354 355 // 获取国属 356 func GetVINCountry(vin string) string { 357 conti := GetVINContinent(vin) 358 switch conti { 359 case AfricaStr: 360 return GetAfricaCountry(vin) 361 case AsiaStr: 362 return GetAsiaCountry(vin) 363 case EuropeStr: 364 return GetEuropeCountry(vin) 365 case NorthAmericaStr: 366 return GetNorthAmericaCountry(vin) 367 case OceaniaStr: 368 return GetOceaniaCountry(vin) 369 case SouthAmericaStr: 370 return GetSouthAmericaCountry(vin) 371 default: 372 return "" 373 } 374 }