Метод parseCaseSensitive
Метод parseCaseSensitive класса DateTimeFormatterBuilder устанавливает чувствительный к регистру режим парсинга для последующих элементов форматтера.
Это означает, что при разборе текста регистр символов будет учитываться строго.
Метод возвращает тот же объект DateTimeFormatterBuilder для цепочки вызовов.
Импорт
import java.time.format.DateTimeFormatterBuilder
Синтаксис
fun parseCaseSensitive(): DateTimeFormatterBuilder
Пример
Создадим форматтер с чувствительным к регистру парсингом для месяцев:
val builder = DateTimeFormatterBuilder()
val formatter = builder
.parseCaseSensitive()
.appendPattern("MMM yyyy")
.toFormatter()
val dateStr = "Jan 2025"
val date = java.time.YearMonth.parse(dateStr, formatter)
println(date)
Результат выполнения кода:
String "2025-01"
Пример
Покажем разницу между чувствительным и нечувствительным к регистру парсингом:
val sensitiveFormatter = DateTimeFormatterBuilder()
.parseCaseSensitive()
.appendPattern("MMM")
.toFormatter()
val insensitiveFormatter = DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("MMM")
.toFormatter()
val monthStr1 = "Jan"
val monthStr2 = "JAN"
try {
val month1 = java.time.Month.from(sensitiveFormatter.parse(monthStr1))
println("Sensitive Jan: $month1")
} catch (e: Exception) {
println("Sensitive Jan failed: ${e.message}")
}
try {
val month2 = java.time.Month.from(sensitiveFormatter.parse(monthStr2))
println("Sensitive JAN: $month2")
} catch (e: Exception) {
println("Sensitive JAN failed: ${e.message}")
}
val month3 = java.time.Month.from(insensitiveFormatter.parse(monthStr1))
val month4 = java.time.Month.from(insensitiveFormatter.parse(monthStr2))
println("Insensitive Jan: $month3")
println("Insensitive JAN: $month4")
Результат выполнения кода:
String "Sensitive Jan: JANUARY"
String "Sensitive JAN failed: Text 'JAN' could not be parsed at index 0"
String "Insensitive Jan: JANUARY"
String "Insensitive JAN: JANUARY"
Пример
Комбинируем чувствительный и нечувствительный парсинг для разных частей даты:
val customFormatter = DateTimeFormatterBuilder()
.parseCaseSensitive()
.appendPattern("EEE") // Чувствительные дни недели
.appendLiteral(' ')
.parseCaseInsensitive()
.appendPattern("MMM") // Нечувствительные месяцы
.appendLiteral(' ')
.appendPattern("yyyy")
.toFormatter()
val dateStr = "Mon jan 2025"
val date = java.time.LocalDate.parse(dateStr, customFormatter)
println(date)
Результат выполнения кода:
String "2025-01-05"
Смотрите также
-
метод
parseCaseInsensitiveклассаDateTimeFormatterBuilder,
который устанавливает нечувствительный к регистру режим парсинга -
метод
appendPatternклассаDateTimeFormatterBuilder,
который добавляет шаблон для форматирования -
метод
toFormatterклассаDateTimeFormatterBuilder,
который завершает построение форматтера -
класс
DateTimeFormatter,
который предоставляет методы для форматирования и парсинга дат