# Kotlin 程序：计算句子中元音和辅音的数量

> 原文： [https://www.programiz.com/kotlin-programming/examples/vowel-consonant-count-string](https://www.programiz.com/kotlin-programming/examples/vowel-consonant-count-string)

#### 在此程序中，您将学习计算 Kotlin 中给定句子中的元音，辅音，数字和空格的数量。

## 示例 1：计算元音，辅音，数字和空格的程序

```kt
fun main(args: Array<String>) {
    var line = "This website is aw3som3."
    var vowels = 0
    var consonants = 0
    var digits = 0
    var spaces = 0

    line = line.toLowerCase()
    for (i in 0..line.length - 1) {
        val ch = line[i]
        if (ch == 'a' || ch == 'e' || ch == 'i'
                || ch == 'o' || ch == 'u') {
            ++vowels
        } else if (ch in 'a'..'z') {
            ++consonants
        } else if (ch in '0'..'9') {
            ++digits
        } else if (ch == ' ') {
            ++spaces
        }
    }

    println("Vowels: $vowels")
    println("Consonants: $consonants")
    println("Digits: $digits")
    println("White spaces: $spaces")
}
```

运行该程序时，输出为：

```kt
Vowels: 6
Consonants: 11
Digits: 3
White spaces: 3
```

在上面的示例中，每个检查都有 4 个条件。

*   第一个`if`条件是检查字符是否为**元音**。
*   `if`后面的`else if`条件是检查字符是否为**辅音**。 否则顺序应相同，否则所有元音也被视为辅音。
*   第三个条件（`else-if`）是检查字符是否在 **0 到 9** 之间。
*   最后，最后一个条件是检查字符是否为**空格**字符。

为此，我们使用`toLowerCase()`将行小写。 这样做是为了不检查大写的 A 到 Z 和元音的优化。

我们使用`length()`函数来了解字符串的长度，并使用`charAt()`来获取给定索引（位置）处的字符。

这是等效的 Java 代码： [Java 程序：计算句子中的元音和辅音数量](/java-programming/examples/vowel-consonant-count-string "Java program to count number of vowels and consonants in a sentence")。

* * *

## 示例 2：使用`when`计数元音，辅音，数字和空格的程序

```kt
fun main(args: Array<String>) {
    var line = "This website is aw3som3."
    var vowels = 0
    var consonants = 0
    var digits = 0
    var spaces = 0

    line = line.toLowerCase()
    for (i in 0..line.length - 1) {
        val ch = line[i]
        when (ch) {
            'a', 'e', 'i', 'o', 'u' -> ++vowels
            in 'a'..'z' -> ++consonants
            in '0'..'9' -> ++digits
            ' ' -> ++spaces
        }
    }

    println("Vowels: $vowels")
    println("Consonants: $consonants")
    println("Digits: $digits")
    println("White spaces: $spaces")
}
```

该程序的输出与示例 1 相同。

在这里，您可以看到我们使用了一个简单的`when`表达式来删除`if-else`语句。 这使得代码少了很多，也更容易理解。