#java #java-me
#java #java-me
Вопрос:
Из строковых данных csv есть строковые данные, подобные дате, то есть строковые данные, подобные дате, имеют вид dd/mm/yyyy
. Я хочу реализовать метод, который сравнивает две строковые данные, подобные дате, например, если я сравниваю два объекта Date. Как добиться этого в J2ME?
Ответ №1:
Вы можете сравнить строки, сравнив отдельные подстроки по годам, как там:
public int compare(String date1, String date2) {
int year = date1.substring(6).compareTo(date2.substring(6));
if (year == 0) {
int month = date1.substring(3,5).compareTo(date2.substring(3,5));
if (month == 0) {
return date1.substring(0,2).compareTo(date2.substring(0,2));
} else {
return month;
}
} else {
return year;
}
}
Это работает даже в MIDP, хотя я бы согласился, что это не решение, выигравшее какой-либо конкурс красоты.
Комментарии:
1. вы могли бы напрямую упорядочить строки в формат «ггггммдд» и сравнить их, если хотите увеличить красоту 😉
2. Однако я также подумал об этом, однако код с изменением порядка был бы одинаково уродливым. Итак, инкапсуляция — это порядок дня.
3. 1 … но это некрасиво. На самом деле я бы предпочел написать специальный метод синтаксического анализа, чтобы превратить строки в даты, а затем сравнить их. По крайней мере, таким образом вы знаете, что сравниваете действительные даты.
4. Хотя вы были правы, добавив закрывающую скобку в
compareto
, я считаю крайне невежливым изменять мой стиль отступов кода. Это вопрос моего личного стиля, поскольку это мой ответ. Продолжайте писать свои собственные в своем стиле, но, пожалуйста, оставьте мои в покое