如何使用正则表达式从VIN获得车辆制造商

问题描述

我正在尝试编写一种方法,该方法采用字符串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","SZA","SZC","UN1","WF2","XLC","1FC","1FF","1F0","1F1","1F6","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);
    }

我现在正试图使用​​正则表达式来做同样的事情。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)