mirror of
https://gitee.com/johng/gf
synced 2026-06-06 16:21:40 +08:00
revert SearchArray/InArray functions for gstr
This commit is contained in:
@ -7,12 +7,27 @@
|
||||
package cmdenv
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/g/container/gvar"
|
||||
"github.com/gogf/gf/g/os/gcmd"
|
||||
"github.com/gogf/gf/g/os/genv"
|
||||
"strings"
|
||||
"github.com/gogf/gf/g/container/gvar"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
// Console options.
|
||||
cmdOptions = make(map[string]string)
|
||||
)
|
||||
|
||||
func init() {
|
||||
reg := regexp.MustCompile(`\-\-{0,1}(.+?)=(.+)`)
|
||||
for i := 0; i < len(os.Args); i++ {
|
||||
result := reg.FindStringSubmatch(os.Args[i])
|
||||
if len(result) > 1 {
|
||||
cmdOptions[result[1]] = result[2]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取指定名称的命令行参数,当不存在时获取环境变量参数,皆不存在时,返回给定的默认值。
|
||||
// 规则:
|
||||
// 1、命令行参数以小写字母格式,使用: gf.包名.变量名 传递;
|
||||
@ -22,11 +37,11 @@ func Get(key string, def...interface{}) gvar.VarRead {
|
||||
if len(def) > 0 {
|
||||
value = def[0]
|
||||
}
|
||||
if v := gcmd.Option.Get(key); v != "" {
|
||||
if v, ok := cmdOptions[key]; ok {
|
||||
value = v
|
||||
} else {
|
||||
key = strings.ToUpper(strings.Replace(key, ".", "_", -1))
|
||||
if v := genv.Get(key); v != "" {
|
||||
if v := os.Getenv(key); v != "" {
|
||||
value = v
|
||||
}
|
||||
}
|
||||
|
||||
@ -594,4 +594,21 @@ func QuoteMeta(str string) string {
|
||||
buf.WriteRune(char)
|
||||
}
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
// SearchArray searches string <s> in string slice <a> case-sensitively,
|
||||
// returns its index in <a>.
|
||||
// If <s> is not found in <a>, it returns -1.
|
||||
func SearchArray (a []string, s string) int {
|
||||
for i, v := range a {
|
||||
if s == v {
|
||||
return i
|
||||
}
|
||||
}
|
||||
return -1
|
||||
}
|
||||
|
||||
// InArray checks whether string <s> in slice <a>.
|
||||
func InArray (a []string, s string) bool {
|
||||
return SearchArray(a, s) != -1
|
||||
}
|
||||
@ -383,3 +383,22 @@ func Test_ContainsAny(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func Test_SearchArray(t *testing.T) {
|
||||
gtest.Case(t, func() {
|
||||
a := g.SliceStr{"a", "b", "c"}
|
||||
gtest.AssertEQ(gstr.SearchArray(a, "a"), 0)
|
||||
gtest.AssertEQ(gstr.SearchArray(a, "b"), 1)
|
||||
gtest.AssertEQ(gstr.SearchArray(a, "c"), 2)
|
||||
gtest.AssertEQ(gstr.SearchArray(a, "d"), -1)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_InArray(t *testing.T) {
|
||||
gtest.Case(t, func() {
|
||||
a := g.SliceStr{"a", "b", "c"}
|
||||
gtest.AssertEQ(gstr.InArray(a, "a"), true)
|
||||
gtest.AssertEQ(gstr.InArray(a, "b"), true)
|
||||
gtest.AssertEQ(gstr.InArray(a, "c"), true)
|
||||
gtest.AssertEQ(gstr.InArray(a, "d"), false)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user