// GetStringInBetween Returns empty string if no start string found
func GetStringInBetween(str string, start string, end string) (result string) {
s := strings.Index(str, start)
if s == -1 {
return
}
s += len(start)
e := strings.Index(str[s:], end)
if e == -1 {
return
}
e += s + e - 1
return str[s:e]
}
func findInString(str, start, end string) ([]byte, error) {
var match []byte
index := strings.Index(str, start)
if index == -1 {
return match, errors.New("Not found")
}
index += len(start)
for {
char := str[index]
if strings.HasPrefix(str[index:index+len(match)], end) {
break
}
match = append(match, char)
index++
}
return match, nil
}
9条答案
按热度按时间envsm3lx1#
如果字符串看起来像什么开始;提取;END;你可以使用的任何方法都可以得到介于两者之间的字符串:
这里所发生的是它将找到START的第一个索引,加上START字符串的长度,并返回从那里到END的第一个索引为止存在的所有内容。
flseospp2#
在所有的编程语言中,有很多方法可以拆分字符串。
由于我不知道您特别要求的是什么,我提供了一个示例方法来从示例中获得您想要的输出。
在上面的代码中,我们从字符串的左边修剪
<h1>
,从右边修剪</h1>
。正如我所说的,有数百种方法可以拆分特定的字符串,这只是一个示例。
希望对你有帮助,祝你和Golang好运:)
数据库
ulydmbyx3#
我改进了
Jan Kardaš
的答案。现在你可以找到在开始和结束处有多于1个字符的字符串。wf82jlnq4#
下面是我使用正则表达式的答案。不知道为什么没有人建议这个最安全的方法
Playground-https://play.golang.org/p/Yc61x1cbZOJ
3mpgtkmj5#
在strings pkg中,您可以使用Replacer来产生巨大影响。
开始play!
luaexgnf6#
brtdzjyr7#
读一读strings包,看看SplitAfter函数能做什么:
这将生成如下所示的切片:
"[", "this][", "is my][", "string]"
。使用进一步的函数修剪你应该得到你的解决方案。祝你好运。qcbq4gxm8#
SplitAfterN
的第一次调用将原始字符串拆分为2个部分的数组除以第一个找到的after
字符串,或者它将生成包含等于原始字符串的1个部分的数组。SplitAfterN
的第二次调用使用a[len(a)-1]
作为输入,因为它是“数组a
的最后一项“。因此,after
之后的字符串或原始字符串str
。输入将被拆分为2个部分的数组,除以第一个找到的before
字符串,或者它将产生包含等于输入的1个部分的数组。如果没有找到
after
,那么我们可以简单地返回b[0]
,因为它等于a[len(a)-1]
如果找到
after
,它将包含在b[0]
字符串的末尾,因此您必须通过b[0][0:len(b[0])-len(after)]
对其进行修剪所有字符串都区分大小写
to94eoyn9#
不如这样:
如果未找到拆分,则返回空字符串。