英文:
Get python-like split() working with go's strings.Split()
问题
在Python中,没有指定分隔符的split()
函数会根据空格、制表符等进行分割,并返回一个移除了所有空格的列表。
如何在Go语言中实现类似的功能?
package main
import "fmt"
import "strings"
func main() {
s := "string with multiple spaces"
lst := strings.Split(s, " ")
for k, v := range lst {
fmt.Println(k, v)
}
}
上述代码的输出结果为:
0 string
1
2
3
4 with
5 multiple
6
7
8
9
10
11 spaces
我想将lst[0]
、lst[1]
、lst[2]
和lst[3]
中的每个字符串保存起来。这可以实现吗?谢谢。
英文:
In python, the split()
function with no separator splits the on whitespace/tab etc. and returns a list with all spaces removed
>>> "string with multiple spaces".split()
['string', 'with', 'multiple', 'spaces']
How can I achieve something similar in go
?
package main
import "fmt"
import "strings"
func main() {
s := "string with multiple spaces"
lst := strings.Split(s, " ")
for k, v := range lst {
fmt.Println(k,v)
}
}
The above gives
0 string
1
2
3
4 with
5 multiple
6
7
8
9
10
11 spaces
I'd like to save each of the strings in lst[0]
, lst[1]
, lst[2]
and lst[3]
. Can this be done? Thanks
答案1
得分: 9
你正在寻找strings.Fields
函数:
> func Fields(s string) []string
> Fields函数将字符串s按照一个或多个连续的空白字符进行分割,空白字符的定义由unicode.IsSpace确定,返回s的子字符串数组,如果s只包含空白字符,则返回空列表。
>
> 示例
>
> fmt.Printf("Fields are: %q", strings.Fields(" foo bar baz "))
> 输出:
>
> Fields are: ["foo" "bar" "baz"]
英文:
You are looking for strings.Fields
:
> func Fields(s string) []string
> Fields splits the string s around each instance of one or more consecutive white space characters, as defined by unicode.IsSpace, returning an array of substrings of s or an empty list if s contains only white space.
>
> Example
>
> fmt.Printf("Fields are: %q", strings.Fields(" foo bar baz "))
> Output:
>
> Fields are: ["foo" "bar" "baz"]
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论