String Go:从两个字符或其他字符串之间检索字符串
例如,假设我有一个字符串,如下所示:String Go:从两个字符或其他字符串之间检索字符串,string,go,substring,String,Go,Substring,例如,假设我有一个字符串,如下所示: <h1>Hello World!</h1> var sample = "[this][is my][string]" t := strings.SplitAfter(sample, "[") 你好,世界! Go代码能够提取什么Hello World来自该字符串?我还是个新手。非常感谢您的帮助 仔细阅读字符串包。查看可以执行以下操作的函数: <h1>Hello World!</h1> var sample
<h1>Hello World!</h1>
var sample = "[this][is my][string]"
t := strings.SplitAfter(sample, "[")
你好,世界!
Go代码能够提取什么
Hello World代码>来自该字符串?我还是个新手。非常感谢您的帮助 仔细阅读字符串包。查看可以执行以下操作的函数:
<h1>Hello World!</h1>
var sample = "[this][is my][string]"
t := strings.SplitAfter(sample, "[")
这应该会生成一个类似于:“[”,“this][”,“is my][”,“string]”的切片。使用进一步的函数进行修剪,您应该可以得到您的解决方案。祝你好运。在所有编程语言中,有很多方法可以分割字符串
因为我不知道你特别想要什么,所以我提供了一个获取输出的示例方法
你想从你的样品中得到什么
package main
import "strings"
import "fmt"
func main() {
initial := "<h1>Hello World!</h1>"
out := strings.TrimLeft(strings.TrimRight(initial,"</h1>"),"<h1>")
fmt.Println(out)
}
主程序包
导入“字符串”
输入“fmt”
func main(){
首字母:=“你好,世界!”
out:=strings.trimleeft(strings.trimlright(首字母“”)”)
fmt.Println(输出)
}
在上面的代码中,从字符串的左侧修剪
,从右侧修剪
正如我所说,有数百种方法可以分割特定的字符串,这只是一个示例
希望有帮助,祝Golang好运:)
DB在pkg中,您可以使用替代品来产生重大影响
r := strings.NewReplacer("<h1>", "", "</h1>", "")
fmt.Println(r.Replace("<h1>Hello World!</h1>"))
r:=strings.NewReplacer(“,”,“,”,”)
fmt.Println(r.Replace(“你好,世界!”)
如果字符串看起来像什么,则转到;开始摘录结束;无论您可以使用什么,它都将获得介于以下两者之间的字符串:
// 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
}
SplitAfterN
的第一次调用将原始字符串拆分为2个部分的数组,由字符串之后第一个找到的划分,或者它将生成包含1个部分等于原始字符串的数组
SplitAfterN
的第二次调用使用a[len(a)-1]
作为输入,因为它是“数组的最后一项a
”。因此,要么是之后的字符串,要么是原始字符串str
。输入将被拆分为2个部分的数组,除以字符串之前找到的第一个,或者它将生成包含1个部分的数组,该部分等于输入
如果在之后没有找到,我们可以简单地返回b[0]
,因为它等于a[len(a)-1]
如果在
之后找到了,它将包含在b[0]
字符串的末尾,因此您必须通过b[0][0:len(b[0])-len(after)]
所有字符串都区分大小写我改进了`的答案。
现在,您可以在开始和结束处找到超过1个字符的字符串
func GetStringInBetweenTwoString(str string, startS string, endS string) (result string,found bool) {
s := strings.Index(str, startS)
if s == -1 {
return result,false
}
newS := str[s+len(startS):]
e := strings.Index(newS, endS)
if e == -1 {
return result,false
}
result = newS[:e]
return result,true
}
您是否希望解析特定的模式或格式?例如,文本是否总是被标记、通用HTML或其他完全不同的内容包围?没有足够的信息来回答这个问题,所以我投了反对票。它只是匹配字符串。如果我击中一个匹配的字符串,然后另一个,然后给我中间的东西。为了操纵HTML,查看或。这个问题的好答案是错误的,因为修剪参数是一个字符列表而不是字符串。如果initial:=“hhhhh ello”
则结果将是ello
忽略此答案。它适用于@T145s特定情况,但不适用于一般情况。下面的答案非常有效。这是最好的答案,但是如果在开始之前没有找到结尾或者也找到了结尾,则会出现恐慌,请参阅此播放链接:。该播放链接还包括修复此问题的修订版。我将此修订提交给SO,SO正在进行同行评审。@schollz是正确的,并提供了更正确的答案。复制和粘贴这个答案是危险的,因为它会引起恐慌。不过,感谢Jan的原始工作。改进的答案是:这如何回答OP关于查找标记之间的字符串的问题?它只显示了如何删除标记。我的回答完全符合OP的要求:“什么Go代码能够从该字符串中提取Hello World!”