英文:
Return first n chars of a string
问题
在Go语言中,你已经找到了一种有效的方法来返回一个字符串的前n个字符作为子字符串。但是,如果字符串的长度小于n,你只需返回字符串本身。
在Go中,你可以使用以下代码实现:
func firstN(s string, n int) string {
if len(s) > n {
return s[:n]
}
return s
}
这是一种简洁的方法来实现你的需求。
另外,你提到在Scala中可以使用s take n
来实现相同的功能。这是因为Scala提供了更简洁的语法来处理字符串和集合操作。
英文:
What is the best way to return first n chars as substring of a string, when there isn't n chars in the string, just return the string itself.
I can do the following:
func firstN(s string, n int) string {
if len(s) > n {
return s[:n]
}
return s
}
but is there a cleaner way?
BTW, in Scala, I can just do s take n
.
答案1
得分: 7
你的代码在不涉及Unicode的情况下是可以正常工作的:
fmt.Println(firstN("世界 Hello", 1)) // �
如果你想要处理Unicode,可以按照以下方式修改函数:
// 无需分配内存的版本
func firstN(s string, n int) string {
i := 0
for j := range s {
if i == n {
return s[:j]
}
i++
}
return s
}
fmt.Println(firstN("世界 Hello", 1)) // 世
// 你也可以将字符串转换为rune切片,但这将需要额外的内存分配
func firstN2(s string, n int) string {
r := []rune(s)
if len(r) > n {
return string(r[:n])
}
return s
}
fmt.Println(firstN2("世界 Hello", 1)) // 世
以上是翻译好的内容,请确认是否满意。
英文:
Your code is fine unless you want to work with unicode:
fmt.Println(firstN("世界 Hello", 1)) // �
To make it work with unicode you can modify the function in the following way:
// allocation free version
func firstN(s string, n int) string {
i := 0
for j := range s {
if i == n {
return s[:j]
}
i++
}
return s
}
fmt.Println(firstN("世界 Hello", 1)) // 世
// you can also convert a string to a slice of runes, but it will require additional memory allocations
func firstN2(s string, n int) string {
r := []rune(s)
if len(r) > n {
return string(r[:n])
}
return s
}
fmt.Println(firstN2("世界 Hello", 1)) // 世
答案2
得分: 2
college := "ARMY INSTITUTE OF TECHNOLOGY PUNE"
fmt.Println(college)
name := college[0:4]
fmt.Println(name)
学院 := "ARMY INSTITUTE OF TECHNOLOGY PUNE"
fmt.Println(学院)
姓名 := 学院[0:4]
fmt.Println(姓名)
英文:
college := "ARMY INSTITUTE OF TECHNOLOGY PUNE"
fmt.Println(college)
name := college[0:4]
fmt.Println(name)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论