if (null == str || str.length() == 0) { return str; }
if (str == null) { return null; } str = this.clean(str); if (str.length() == 0) { return str; }
    public String soundex(String str) {        if (null == str || str.length() == 0) { return str; }                char out[] = { '0', '0', '0', '0' };        char last, mapped;        int incount = 1, count = 1;        out[0] = Character.toUpperCase(str.charAt(0));        last = getMappingCode(str.charAt(0));        while ((incount < str.length()) && (mapped = getMappingCode(str.charAt(incount++))) != 0 && (count < this.getMaxLength())) {                if ((mapped != '0') && (mapped != last)) {                    out[count++] = mapped;                }                last = mapped;            }        return new String(out);    }