|
||||||||
Программирование мобильных телефонов
Программирование на Java
|
Как сравнить строки Операция сравнения == сопоставляет только ссылки на строки. Она выясняет, указывают ли ссылки на одну и ту же строку. Например, для строк String s1 = "Какая-то строка"; String s2 = "Другая-строка"; сравнение s1 == s2 дает в результате false . Значение true получится, только если обе ссылки указывают на одну и ту же строку, например, после присваивания si = s2 . Интересно, что если мы определим s2 так: String s2 == "Какая-то строка"; то сравнение s1 == s2 даст в результате true , потому что компилятор создаст только один экземпляр константы "Какая-то строка" и направит на него все ссылки. Вы, разумеется, хотите сравнивать не ссылки, а содержимое строк. Для этого есть несколько методов. Логический метод equals (object obj) , переопределенный из класса object , возвращает true , если аргумент obj не равен null , является объектом класса string , и строка, содержащаяся в нем, полностью идентична данной строке вплоть до совпадения регистра букв. В остальных случаях возвращается значение false . Логический метод equalsIgnoreCase(object obj) работает так же, но одинаковые буквы, записанные в разных регистрах, считаются совпадающими. Например, s2.equals("другая строка") даст в результате false , а s2.equalsIgnoreCase("другая строка") возвратит true . Метод compareTo(string str) возвращает целое число типа int , вычисленное по следующим правилам:
Если значение str равно null , возникает исключительная ситуация. Нуль возвращается в той же ситуации, в которой метод equals() возвращает true . Метод compareToignoreCase(string str) производит сравнение без учета регистра букв, точнее говоря, выполняется метод this.toUpperCase().toLowerCase().compareTo( str.toUpperCase().toLowerCase()); Еще один метод— compareTo (Object obj) создает исключительную ситуацию, если obj не является строкой. В остальном он работает как метод compareTo(String str). Эти методы не учитывают алфавитное расположение символов в локальной кодировке. Русские буквы расположены в Unicode по алфавиту, за исключением одной буквы. Заглавная буква Ё расположена перед всеми кириллическими буквами, ее код '\ u040l ', а строчная буква е — после всех русских букв, ее код '\ u0451 '. Если вас такое расположение не устраивает, задайте свое размещение букв с помощью класса RuleBasedCollator из пакета java.text . Сравнить подстроку данной строки this с подстрокой той же длины len другой строки str можно логическим методом regionMatches(int indl, String str, int ind2, int len) Здесь ind1 — индекс начала подстроки данной строки this, ind2 — индекс начала подстроки другой строки str . Результат false получается в следующих случаях:
Этот метод различает символы, записанные в разных регистрах. Если надо сравнивать подстроки без учета регистров букв, то используйте логический метод: regionMatches(boolean flag, int indl, String str, int ind2, int len) Если первый параметр flag равен true , то регистр букв при сравнении подстрок не учитывается, если false — учитывается.
|
|
||||||
Copyright © vzlom-1.ru 2020-2021
|