[code="java"]
public static int charType(String str) {
if (str != null && str.length() > 0) {
byte[] b = str.getBytes();
byte b1 = b[0];
byte b2 = b.length > 1 ? b[1] : 0;
if (getUnsigned(b1) < 128) {
if ("\"!,.?()[]{}+=".indexOf((char) b1) != -1)
return CT_DELIMITER;
return CT_SINGLE;
} else if (getUnsigned(b1) == 162)
return CT_INDEX;
else if (getUnsigned(b1) == 163 && getUnsigned(b2) > 175 && getUnsigned(b2) < 186)
return CT_NUM;
else if (getUnsigned(b1) == 163
&& (getUnsigned(b2) >= 193 && getUnsigned(b2) <= 218 || getUnsigned(b2) >= 225
&& getUnsigned(b2) <= 250))
return CT_LETTER;
else if (getUnsigned(b1) == 161 || getUnsigned(b1) == 163)
return CT_DELIMITER;
else if (getUnsigned(b1) >= 176 && getUnsigned(b1) <= 247)
return CT_CHINESE;
}
return CT_OTHER;
}
public static int getUnsigned(byte b) {
if (b > 0)
return (int) b;
else
return (b & 0x7F + 128);
}
[/code]