// return empty tokens
return null;
}
StringBuilder subStrSet = new StringBuilder();
ArrayList
ArrayList
final int inputLength = input.length();
final StringBuilder subString = new StringBuilder();
final StringBuilder subStrOffset = new StringBuilder();
int tokenType = Token.LATIN;
int caseTypePre = DialerSearchToken.FIRSTCASE;
int caseTypeCurr = DialerSearchToken.UPPERCASE;
int mPos = 0;
// Go through the input, create a new token when
// a. Token type changed
// b. Get the Pinyin of current charater.
// c. current character is space.
// d. Token case changed from lower case to upper case,
// e. the first character is always a separated one
// f character == '+' || character == '#' || character == '*' || character == ',' || character == ';'
for (int i = 0; i < inputLength; i++) {
final char character = input.charAt(i);
if (character == '-' || character == ',' ){
mPos++;
} else if (character == ' ') {
if (subString.length() > 0) {
addToken(subString, tokens, tokenType);
addOffsets(subStrOffset, shortSubStrOffset);
}
addSubString(tokens,shortSubStrOffset,subStrSet,offsets);
mPos++;
caseTypePre = DialerSearchToken.FIRSTCASE;
} else if (character < 256) {
if (tokenType != Token.LATIN && subString.length() > 0) {
addOffsets(subStrOffset, shortSubStrOffset);
}
caseTypeCurr = (character>='A' && character<='Z') DialerSearchToken.UPPERCASE:DialerSearchToken.LOWERCASE;
if(caseTypePre == DialerSearchToken.LOWERCASE && caseTypeCurr == DialerSearchToken.UPPERCASE){
addToken(subString, tokens, tokenType);
addOffsets(subStrOffset, shortSubStrOffset);
}
caseTypePre = caseTypeCurr;
tokenType = Token.LATIN;
Character c = Character.toUpperCase(character);
if(c != null){
subString.append(c);
subStrOffset.append((char)mPos);
}
mPos++;
} else if (character < FIRST_UNIHAN) {
//Comment out. Do not cover unknown characters SINCE they can not be input.
// if (tokenType != Token.UNKNOWN && subString.length() > 0) {
// addToken(subString, tokens, tokenType);
// addOffsets(subStrOffset, shortSubStrOffset);
// caseTypePre = Token.FIRSTCASE;
// }
// tokenType = Token.UNKNOWN;
// Character c = Character.toUpperCase(character);
// if(c != null){
// subString.append(c);
// subStrOffset.append((char)(mPos));
// }
mPos++;
} else {
Token t = getToken(character);
int tokenSize = t.target.length();
//Current type is PINYIN
if (t.type == Token.PINYIN) {