登录
首页 >  Golang >  Go问答

Go语言中是否有用于字符串截断的函数?

来源:stackoverflow

时间:2024-02-17 19:00:24 149浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Go语言中是否有用于字符串截断的函数?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

请帮我写一个函数,它接受一个字符串和一个数字的输入,并输出一个缩短的字符串到数字+“...”。如果字符串不超过大小(数字),则仅输出该字符串,但不带“...”。此外,我们的字符串仅使用单字节字符,并且数字严格大于零。

我的两次尝试:

package main

import (
        "fmt"
)
func main() {
var text string
var width int
fmt.scanf("%s %d",&text,&width)
res := text[:width]
fmt.println(res+"...")
}

但是即使字符串不超过宽度,该函数也会添加“...”。

package main
import (
        "fmt"
)
var text string
var width int
fmt.Scanf("%s %d",&text,&width)
if width <= 0 {
    fmt.Println("")
}
res := ""
count := 0
for _, char := range text {
res += string(char)
    count++
    if count >= width {
        break
    }
}
fmt.Println(res+"...")
}

此函数的工作方式相同。


正确答案


继续@marcelloh所说的

这是使用符文而不是字节的示例。

package main

import (
    "fmt"
)

func Truncate(text string, width int) (string, error) {
    if width < 0 {
        return "", fmt.Errorf("invalid width size")
    }
    
    r := []rune(text)
    trunc := r[:width]
    return string(trunc)+ "...", nil
}

func main() {
    word, err := Truncate("Hello, World", 3)
    if err != nil {
        fmt.Println(err.Error())
    }
    fmt.Println(word)
    // Output: Hel...
}

今天关于《Go语言中是否有用于字符串截断的函数?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>