21.06.2011, 17:38. Просмотров 1211. Ответов 1
Добрый день! Пишу свое посимвольное сравнение (условия задачи не позволяют
equalsIgnoreCase применять). Проблема в том, что при сравнении игнорируется последний символ введенной строки (этот способ закомментирован), в незакомментированном все работает.
Например.
Введенная строка: And
Имена: Andrey, Anton
В список совпадающих вносится: An
drey.
An
ton не вносится, так как третья буква t, а не d. Так и должно быть.
В неработающем
if последняя буква введенной строки игнорируется.
Например.
Введенная строка: Anw
Имена: Andrey, Anton
В список совпадающих вносится: Andrey, Anton.
Код (неработающий
if помечен красным, а работающий зеленым).
ArrayList<String> listOfEqs = new ArrayList<String>();
for (String t: listOfNames) {
int endOfStr = Math.min(etIn.getText().toString().length(), t.length());
int cntOfEqSimbs = 0;
for (int i=0; i<endOfStr; ++i) {
if (t.substring(i, i+1).equalsIgnoreCase(etIn.getText().toString().substring(i, i+1)) && !listOfEqs.contains(t)) {
cntOfEqSimbs++;
} // if.
if (cntOfEqSimbs==etIn.getText().toString().length()) listOfEqs.add(t);
/* if (!t.substring(i, i+1).equalsIgnoreCase(etIn.getText().toString().substring(i, i+1)) || listOfEqs.contains(t))
break;
// listOfEqs.add(t);
*/
} // nested for.
} // for.
twFound.setVisibility(0);
lvOfEqs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.test_list_item, listOfEqs));
} // onClick.
listOfNames - массив строк, источник имен для сравнения.
listOfEqs - массив строк, в который вносятся совпадающие имена.
endOfStr - предел, до которого сравниваем (нужен, так как не знаем, что будет короче: имя или введенная строка.
etIn - EditText, в который вводится строка для сравнения с именем.
cntOfEqSimbs - счетчик совпадающих символов (нужен для отбраковки: если хотя бы одна буква не совпадет, то имя не будет внесено в список совпадающих).
Да, у меня есть работающий
if, но неработающий нравится больше, так как там нет лишней переменной cntOfEqSimbs и второго
if.
P.S. Не оформил код в нужные теги, так как при этом не получилось бы выделить цветом работающую и неработающую части.