Go 如何分割/拆分文件中的单词
我有一个包含很多单词的文件,我必须拆分其中一部分已经存在或在扫描文件时出现的单词: 文件中的一些单词是Go 如何分割/拆分文件中的单词,go,split,Go,Split,我有一个包含很多单词的文件,我必须拆分其中一部分已经存在或在扫描文件时出现的单词: 文件中的一些单词是 member members membership memberships 我已经试过了,但我想让第一行[I](是a)继续循环下一个单词 func Split(lines []string) string { for i := 0; i < len(lines)-1; i++ { // position of words j := i + 1 f
member
members
membership
memberships
我已经试过了,但我想让第一行[I](是a)继续循环下一个单词
func Split(lines []string) string {
for i := 0; i < len(lines)-1; i++ { // position of words
j := i + 1
fmt.Println(lines[i], lines[j])
if strings.ContainsAny(lines[j], lines[i]) {
s := strings.Split(dictionary[j], dictionary[i])
fmt.Println(dictionary[i], ".", s)
}
}
...
}
我想要的输出:
member
member.s
member.ship
members.hip
member.ships
members.hips
对于给定的输入,以下内容将有所帮助
func splitSegmant(prev string, cur string) string {
if len(cur) < len(prev) || cur[:len(prev)] != prev {
return ""
}
return fmt.Sprintf("%s.%s", cur[:len(prev)], cur[len(prev):])
}
func Split(lines []string) []string {
splits := []string{lines[0]}
for i := 0; i < len(lines); i++ {
for j := 0; j < i; j++ {
split := splitSegmant(lines[j], lines[i])
if split != "" {
splits = append(splits, split)
}
}
}
return splits
}
func splitSegmant(上一个字符串,当前字符串)字符串{
如果len(cur)
你可能会在这里找到工作代码:你的问题不清楚,循环下一个单词是什么意思?@MostafaSolati我不知道如何用文字解释,但基本上代码应该逐个检查单词中的每个字母,如果单词中的字母/某些单词已经出现,单词将被拆分。请务必参考输出以了解更多信息examples@MostafaSolati额外输出示例,成员,成员⋅船,成员⋅船舶、成员⋅hip为什么最后一个词改为members.hip而不是member.ship?@MostafaSolati因为members也是出现在members之前的一个词,我忘了在members之后加上它。我可以知道这是什么意思吗?cur[:len(prev)],当前字长输出是否与前一个字长相似?当前字长切片至前一个字长(此处可以是前一个字长中的任意一个)
func splitSegmant(prev string, cur string) string {
if len(cur) < len(prev) || cur[:len(prev)] != prev {
return ""
}
return fmt.Sprintf("%s.%s", cur[:len(prev)], cur[len(prev):])
}
func Split(lines []string) []string {
splits := []string{lines[0]}
for i := 0; i < len(lines); i++ {
for j := 0; j < i; j++ {
split := splitSegmant(lines[j], lines[i])
if split != "" {
splits = append(splits, split)
}
}
}
return splits
}