Kotlinで文字列から数字を抽出する必要がある場面は多いです。たとえば、ユーザーからの入力データから数字を取得する、テキストから価格情報を抽出する、など様々なシナリオが考えられます。今回は、Kotlinで文字列から数字を効率的に抽出する方法を紹介します。

方法1: 正規表現を使用する

正規表現を使用して文字列から数字を抽出する方法は、Kotlinでも非常に効果的です。以下のコードは、正規表現を使って文字列から数字を取得する方法を示しています。

fun extractNumbers(input: String): List<Int> {
    val regex = Regex("\\d+")
    val matchResults = regex.findAll(input)
    return matchResults.map { it.value.toInt() }.toList()
}

fun main() {
    val input = "このテキストには123と456の数字が含まれています。"
    val numbers = extractNumbers(input)
    println("抽出された数字: $numbers")
}

このコードでは、正規表現 \\d+ を使用して文字列から数字を抽出し、それらをリストとして返します。findAll メソッドは正規表現にマッチする全ての部分文字列を見つけ出し、それをイテレータとして返します。

方法2: 文字列の操作を利用する

もう一つの方法は、文字列の操作を利用して数字を抽出することです。以下のコードは、この方法を示しています。

fun extractNumbers(input: String): List<Int> {
    val numbers = mutableListOf<Int>()
    var currentNumber = StringBuilder()

    for (char in input) {
        if (char.isDigit()) {
            currentNumber.append(char)
        } else if (currentNumber.isNotEmpty()) {
            numbers.add(currentNumber.toString().toInt())
            currentNumber.clear()
        }
    }

    if (currentNumber.isNotEmpty()) {
        numbers.add(currentNumber.toString().toInt())
    }

    return numbers
}

fun main() {
    val input = "このテキストには123と456の数字が含まれています。"
    val numbers = extractNumbers(input)
    println("抽出された数字: $numbers")
}

このコードでは、文字列を一文字ずつ走査し、isDigit メソッドを使用して数字かどうかを判定します。数字が見つかったら currentNumber に追加し、数字でない文字が現れたら numbers リストに追加します。

どちらの方法も、文字列から数字を効率的に抽出するためのKotlinのオプションです。シナリオに応じて適切な方法を選択してください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です