C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Result: Consider the main func. We declare a string literal that looks like some sort of data format.
And: We isolate parts of the string based on its surround parts. So we can parse a string like this without any custom string code.
Golang program that implements between, before and after
package main
import (
"fmt"
"strings"
)
func between(value string, a string, b string) string {
// Get substring between two strings.
posFirst := strings.Index(value, a)
if posFirst == -1 {
return ""
}
posLast := strings.Index(value, b)
if posLast == -1 {
return ""
}
posFirstAdjusted := posFirst + len(a)
if posFirstAdjusted >= posLast {
return ""
}
return value[posFirstAdjusted:posLast]
}
func before(value string, a string) string {
// Get substring before a string.
pos := strings.Index(value, a)
if pos == -1 {
return ""
}
return value[0:pos]
}
func after(value string, a string) string {
// Get substring after a string.
pos := strings.LastIndex(value, a)
if pos == -1 {
return ""
}
adjustedPos := pos + len(a)
if adjustedPos >= len(value) {
return ""
}
return value[adjustedPos:len(value)]
}
func main() {
// Example string to parse.
test := "DEFINE:A=TWO"
// Test between func.
fmt.Println(between(test, "DEFINE:", "="))
fmt.Println(between(test, ":", "="))
// Test before func.
fmt.Println(before(test, ":"))
fmt.Println(before(test, "="))
// Test after func.
fmt.Println(after(test, ":"))
fmt.Println(after(test, "DEFINE:"))
fmt.Println(after(test, "="))
}
Output
A
A
DEFINE
DEFINE:A
A=TWO
A=TWO
TWO