通八洲科技

如何在 Go 语言中准确统计字符串的行数

日期:2025-12-31 00:00 / 作者:碧海醫心

在 go 中统计字符串行数需计算换行符 `\n` 的数量,并根据末尾是否以换行符结尾决定是否加 1,无内置函数直接返回行数。

Go 标准库未提供类似 strings.LineCount() 的内置函数,因此需手动实现。核心逻辑是:每遇到一个 \n 表示一行结束,但最后一行不一定以 \n 结尾。因此,正确做法是:

以下是推荐实现:

package main

import (
    "fmt"
    "strings"
)

func NumLines(s string) int {
    n := strings.Count(s, "\n")
    if !strings.HasSuffix(s, "\n") {
        n++
    }
    return n
}

func main() {
    fmt.Println(NumLines("line 1\nline 2\nline 3"))     // 输出: 3
    fmt.Println(NumLines("single line"))                // 输出: 1
    fmt.Println(NumLines("a\nb\nc\n"))                 // 输出: 3(末尾有 \n,不额外加)
    fmt.Println(NumLines(""))                           // 输出: 0(空字符串,无行)
}

⚠️ 注意事项:

总结:虽无内置函数,但借助 strings.Count 与 strings.HasSuffix 组合,即可简洁、健壮、高效地实现行数统计。