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のオプションです。シナリオに応じて適切な方法を選択してください。