5 простых способов разделить целые числа запятыми в Котлине

В Kotlin есть несколько удобных методов разделения целых чисел запятыми. Независимо от того, работаете ли вы с большим числом или с простым списком, добавление запятых может улучшить читаемость и сделать ваш код более удобным для пользователя. В этой статье мы рассмотрим пять различных методов решения этой задачи, дополненные разговорными объяснениями и примерами кода.

Метод 1: использование класса DecimalFormat
Класс DecimalFormat в Kotlin предоставляет простой способ форматирования чисел с помощью запятых. Вот пример:

import java.text.DecimalFormat
fun separateByCommas(number: Int): String {
    val formatter = DecimalFormat("#,###")
    return formatter.format(number)
}
fun main() {
    val number = 12345678
    val formattedNumber = separateByCommas(number)
    println(formattedNumber) // Output: 12,345,678
}

Метод 2: использование класса StringBuilder
Другой подход заключается в использовании класса StringBuilder для построения форматированной строки. Вот как это можно сделать:

fun separateByCommas(number: Int): String {
    val numberString = number.toString()
    val reversedNumber = numberString.reversed()
    val stringBuilder = StringBuilder()
    for (i in reversedNumber.indices) {
        stringBuilder.append(reversedNumber[i])
        if ((i + 1) % 3 == 0 && (i + 1) != reversedNumber.length) {
            stringBuilder.append(',')
        }
    }
    return stringBuilder.reverse().toString()
}
fun main() {
    val number = 12345678
    val formattedNumber = separateByCommas(number)
    println(formattedNumber) // Output: 12,345,678
}

Метод 3: использование регулярных выражений (регулярных выражений)
Регулярное выражение может быть мощным инструментом для сопоставления шаблонов и манипуляций со строками. Вот пример того, как можно использовать регулярное выражение для разделения целых чисел запятыми:

fun separateByCommas(number: Int): String {
    val numberString = number.toString()
    return numberString.replace(Regex("(\\d)(?=(\\d{3})+\$)"), "$1,")
}
fun main() {
    val number = 12345678
    val formattedNumber = separateByCommas(number)
    println(formattedNumber) // Output: 12,345,678
}

Метод 4. Использование класса NumberFormat
Класс NumberFormat предоставляет комплексный способ форматирования чисел в различных языковых стандартах. Вот пример:

import java.text.NumberFormat
import java.util.Locale
fun separateByCommas(number: Int): String {
    val numberFormat = NumberFormat.getInstance(Locale.US)
    return numberFormat.format(number)
}
fun main() {
    val number = 12345678
    val formattedNumber = separateByCommas(number)
    println(formattedNumber) // Output: 12,345,678
}

Метод 5: использование функций расширения
Kotlin позволяет расширять существующие классы дополнительными функциями. Вы можете создать функцию расширения, чтобы добавить метод formatWithCommas()в класс Int. Вот пример:

fun Int.formatWithCommas(): String {
    val numberString = this.toString()
    val reversedNumber = numberString.reversed()
    val stringBuilder = StringBuilder()
    for (i in reversedNumber.indices) {
        stringBuilder.append(reversedNumber[i])
        if ((i + 1) % 3 == 0 && (i + 1) != reversedNumber.length) {
            stringBuilder.append(',')
        }
    }
    return stringBuilder.reverse().toString()
}
fun main() {
    val number = 12345678
    val formattedNumber = number.formatWithCommas()
    println(formattedNumber) // Output: 12,345,678
}

Форматирование целых чисел с помощью запятых в Kotlin — распространенное требование для улучшения читаемости. В этой статье мы рассмотрели пять различных методов решения этой задачи: использование класса DecimalFormat, класса StringBuilder, регулярных выражений, класса NumberFormat и функций расширения. Включив эти методы в свой код Kotlin, вы сможете упростить чтение и понимание чисел.