【问题标题】:Golang: acronym of given sentenceGolang:给定句子的首字母缩写词
【发布时间】:2015-06-27 06:45:28
【问题描述】:

给定一个句子,如何使用 GO 编程语言找到该句子的首字母缩写词。例如,“你好,世界!”变成“硬件”。到目前为止,我已经尝试过拆分句子:

package main

import (
    "bufio"
    "fmt"
    "strings"
    "os"
)
func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter text: ")
    text, _ := reader.ReadString('\n')
    fmt.Print(strings.Split(text," "))
    fmt.Print(strings.Index(text, ))
}
  1. 接受用户的输入
  2. 在出现空白时进行拆分。
  3. 下一步是什么?

感谢任何帮助。

谢谢

【问题讨论】:

    标签: go


    【解决方案1】:

    拆分字符串后,您需要将每个单词的第一个字母附加到结果字符串中。

    text := "Hello World"
    words := strings.Split(text, " ")
    
    res := ""
    
    for _, word := range words {
        res = res + string([]rune(word)[0])
    }
    
    fmt.Println(res)
    

    请注意,如果输入为空,您可能需要添加一些检查来捕获这种情况,从而导致来自strings.Split[""]

    【讨论】:

    • 但我无法理解逻辑......这个特定代码字符串([]rune(word)[0])的含义
    • @RISHIKHANNA 哪个具体部分你不明白?
    • 字符串([]符文(字)[0])
    • @RISHIKHANNA 我明白了,这是如何在 Go 中访问字符串的单个字符的方式。有关更多信息,请查看this 问题及其指向的链接。
    • 在转换成字符串之前其实不需要转换成数组或者符文
    【解决方案2】:

    同意第一个答案,但实现方式略有不同;请务必在代码的开头import "strings"

    text := "holur stál fyrirtæki" // fake manufacturer, "hollow steel company"
    words := strings.Split(text, " ")
    
    res := ""
    
    for _, word := range words {
        // Convert to []rune before string to preserve UTF8 encoding
        // Use "Title" from "strings" package to ensure capitalization of acronym
        res += strings.Title(string([]rune(word)[0]))
    }
    
    fmt.Println(res) // => "HSF"
    

    【讨论】:

    • 问题在于使用string(word[0]) 你放弃了对 utf-8 的支持。这就是为什么另一个响应使用[]rune(word)[0]。与希腊视角比较play.golang.org/p/bkk_XkhtJr
    • 这很公平。我不需要经常考虑非 ASCII 术语中的首字母缩略词......请参阅代码中的更新答案和 cmets。我仍然建议应用strings.Title("...") 以确保大写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多