// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. // // This Source Code Form is subject to the terms of the MIT License. // If a copy of the MIT was not distributed with this file, // You can obtain one at https://github.com/gogf/gf. package gstr import "strings" // Str returns part of `haystack` string starting from and including // the first occurrence of `needle` to the end of `haystack`. // See http://php.net/manual/en/function.strstr.php. func Str(haystack string, needle string) string { if needle == "" { return "" } pos := strings.Index(haystack, needle) if pos == NotFoundIndex { return "" } return haystack[pos+len([]byte(needle))-1:] } // StrEx returns part of `haystack` string starting from and excluding // the first occurrence of `needle` to the end of `haystack`. func StrEx(haystack string, needle string) string { if s := Str(haystack, needle); s != "" { return s[1:] } return "" } // StrTill returns part of `haystack` string ending to and including // the first occurrence of `needle` from the start of `haystack`. func StrTill(haystack string, needle string) string { pos := strings.Index(haystack, needle) if pos == NotFoundIndex || pos == 0 { return "" } return haystack[:pos+1] } // StrTillEx returns part of `haystack` string ending to and excluding // the first occurrence of `needle` from the start of `haystack`. func StrTillEx(haystack string, needle string) string { pos := strings.Index(haystack, needle) if pos == NotFoundIndex || pos == 0 { return "" } return haystack[:pos] }