我正在尝试编写一种方法,该方法采用字符串 vin 并返回一些知名制造商(或者如果车辆不是其中之一,则未知)。到目前为止我所做的:
/** World manufacturer identifier regex pattern for VW cars */
private static final Pattern VW_WMI_PATTERN = Pattern.compile("^.{6}S.{3}V.{6}");
/** World manufacturer identifier regex pattern for JMC cars */
private static final Pattern JMC_WMI_PATTERN = Pattern.compile("^(RL3DLT|LJXCU3).{3}M.{7}");
/**
* returns vehicle enum based on input vin
*
* @param vin of vehicle
* @return Vehicle manufacturer
* */
public VehicleManufacturer getVehicleManufacturer(final String vin)
{
if(isJMCVin(vin))
{
return VehicleManufacturer.JMC;
}
else if(isVWVin(vin))
{
return VehicleManufacturer.VW;
}
else
{
return VehicleManufacturer.UNKNOWN;
}
}
/**
* determine if vehicle is JMC
*
* @param vin of vehicle
* @return true if vin is JMC
* */
public static boolean isJMCVin(final String vin)
{
final Matcher m = JMC_WMI_PATTERN.matcher(vin);
return m.matches();
}
/**
* determine if vehicle is VW
*
* @param vin of vehicle
* @return true if vin is VW
* */
public static boolean isVWVin(final String vin)
{
final Matcher m = VW_WMI_PATTERN.matcher(vin);
return m.matches();
}
我想将福特添加到此 - 但我正在努力获得福特的正则表达式模式。
之前使用哈希表做类似事情的尝试有下表 ford :
/** The mapping table that associates WMI values with vehicle manufacturers/brands. */
private static final Map<String,VehicleManufacturer> WMI_MANUFACTURER_TABLE = new Hashtable<String,VehicleManufacturer>();
// Populate the WMI to manufacturer lookup table.
// Ford Vehicles
for(final String wmi : new String[]{
"1FA","1FB","1FD","1FM","1FT","2FA","2FD","2FM","2FT",
"3FA","3FC","MAJ","MNB","MNC","NM0","SFA","TW2","VS6",
"VSK","WF0","WF1","X9F","Y4F",
"YYC","AFA",
"AFM","EPF","FSA","FVL","JC0","JC6","JC7","KNA",
"KNG","KNJ","LFA","MNA","PEL","SBC","SFA","SZA",
"SZC","TW2","UN1","VSK","VS6","WF2","XLC","X9F",
"1FC","1FF","1F0","1F1","1F6","1FD","1FF","1ZV",
"1ZW","2FB","2FC","2FF","3FB","3FD","3FE","3FM",
"3FT","3F8","6FP","8AF","8YT","9BF","SEL",
"Z6F", //, 15219
"LVS","RL3" //FB #15109
})
{
WMI_MANUFACTURER_TABLE.put(wmi, VehicleManufacturer.FORD);
}
我现在正在尝试使用正则表达式来做同样的事情。