gpt4 book ai didi

arrays - 迭代 Go 字符串以提取特定的子字符串

转载 作者:数据小太阳 更新时间:2023-10-29 03:14:54 25 4
gpt4 key购买 nike

我开始学习围棋,我想实现一些算法。我想遍历一个字符串,然后提取一些子字符串,例如:p -(40) *(GOT) +(FF)应该返回这样的数组:[p, 40, GOT, FF]

我写了这样的东西,但它含糊不清:

import (
"strings"

)

func find(input string){
var result []string
a := strings.SplitN(input, "-(", 2);
result[0] = a[0]
b := strings.SplitN(a[1], ") *(", 2)
result[1] = b[0]
c := strings.SplitN(a[1], ") +(", 2)
result[2] = c[0]
d := strings.SplitN(a[1], ")", 2)
result[3] = d[0]
}

有人可以纠正我或提出更简单的建议吗?谢谢!

最佳答案

您可以使用 strings.FieldsFunc,就像这个工作示例代码:

package main

import "fmt"
import "strings"

func find(input string) []string {
return strings.FieldsFunc(input, split)
}

func main() {
strs := find("p -(40) *(GOT) +(FF)")
str := strings.Replace(fmt.Sprint(strs), " ", ", ", -1)
fmt.Println(str)
}

func split(r rune) bool {
return r == ' ' || r == '-' || r == '(' || r == ')' || r == '*' || r == '+'
}

输出:

[p, 40, GOT, FF]

您可以使用 strings.Fields 然后使用 strings.Trim,就像这个工作示例代码:

package main

import "fmt"
import "strings"

func main() {
fmt.Println(find("p -(40) *(GOT) +(FF)"))
}

func find(input string) []string {
strs := strings.Fields(input)
result := make([]string, 0, len(strs))

for _, v := range strs {
s := strings.Trim(v, "()+-*")
if len(s) > 0 {
result = append(result, s)
}
}
return result
}

输出:

[p 40 GOT FF]

这也适用于您的特殊情况:

package main

import "fmt"
import "strings"

func main() {
fmt.Println(find("p -(40) *(GOT) +(FF)"))
}

func find(input string) []string {
strs := strings.Fields(input)
for i := 0; i < len(strs); i++ {
strs[i] = strings.Trim(strs[i], "()+-*")
}
return strs
}

输出:

[p 40 GOT FF]

如果您需要像这样的字符串输出:[p, 40, GOT, FF],试试这个有效的示例代码:

package main

import "fmt"
import "strings"

func main() {
strs := find("p -(40) *(GOT) +(FF)")
str := strings.Replace(fmt.Sprint(strs), " ", ", ", -1)
fmt.Println(str)
}

func find(input string) []string {
strs := strings.Fields(input)
for i := 0; i < len(strs); i++ {
strs[i] = strings.Trim(strs[i], "()+-*")
}
return strs
}

输出:

[p, 40, GOT, FF]

关于arrays - 迭代 Go 字符串以提取特定的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39082892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com