代码拉取完成,页面将自动刷新
package u2
import (
"reflect"
"strings"
)
// SliceHas 检查字符串切片中是否包含指定的字符串
//
// 参数:
//
// slice - 要搜索的字符串切片
// key - 要查找的字符串
// ignoreAa - 是否忽略大小写
//
// 返回值:
//
// bool - 如果找到匹配项返回true,否则返回false
//
// 注意:
//
// 当ignoreAa为true时,使用不区分大小写的比较
//
// 示例:
//
// list := []string{"apple", "Banana", "Orange"}
// found := SliceHas(list, "banana", true) // 返回true
func SliceHas(slice []string, key string, ignoreAa bool) bool {
for _, val := range slice {
if ignoreAa {
if strings.EqualFold(val, key) {
return true
}
} else {
if val == key {
return true
}
}
}
return false
}
// SliceContains 检查字符串切片中是否包含指定子字符串
//
// 参数:
//
// slice - 要搜索的字符串切片
// key - 要查找的子字符串
// ignoreAa - 是否忽略大小写
//
// 返回值:
//
// bool - 如果找到包含子字符串的项返回true,否则返回false
//
// 注意:
//
// 当ignoreAa为true时,使用不区分大小写的比较
//
// 示例:
//
// list := []string{"apple pie", "Banana bread", "Orange juice"}
// found := SliceContains(list, "BANANA", true) // 返回true
func SliceContains(slice []string, key string, ignoreAa bool) bool {
for _, val := range slice {
if ignoreAa {
if strings.Contains(strings.ToUpper(val), strings.ToUpper(key)) {
return true
}
} else {
if strings.Contains(val, key) {
return true
}
}
}
return false
}
// SliceBeContains 检查字符串是否包含切片中的任何值
//
// 参数:
//
// key - 要搜索的字符串
// slice - 包含要查找的字符串的切片
// ignoreAa - 是否忽略大小写
//
// 返回值:
//
// bool - 如果字符串包含切片中的任何值返回true,否则返回false
//
// 注意:
//
// 当ignoreAa为true时,使用不区分大小写的比较
//
// 示例:
//
// list := []string{"apple", "banana", "orange"}
// found := SliceBeContains("I like banana", list, true) // 返回true
func SliceBeContains(key string, slice []string, ignoreAa bool) bool {
for _, val := range slice {
if ignoreAa {
if strings.Contains(strings.ToUpper(key), strings.ToUpper(val)) {
return true
}
} else {
if strings.Contains(key, val) {
return true
}
}
}
return false
}
// Interface2InterfaceSlice 将任意类型的切片转换为[]interface{}类型
//
// 参数:
//
// slice - 要转换的任意类型切片
//
// 返回值:
//
// []interface{} - 转换后的切片
//
// 注意:
//
// 如果输入不是切片类型,返回空切片
//
// 示例:
//
// intSlice := []int{1, 2, 3}
// result := Interface2InterfaceSlice(intSlice) // 返回[]interface{}{1, 2, 3}
func Interface2InterfaceSlice(slice interface{}) []interface{} {
s := reflect.ValueOf(slice)
if s.Kind() != reflect.Slice {
return []interface{}{}
}
ret := make([]interface{}, s.Len())
for i := 0; i < s.Len(); i++ {
ret[i] = s.Index(i).Interface()
}
return ret
}
// GetNoRepeatList 获取去重后的字符串切片
//
// 参数:
//
// list - 要处理的字符串切片
// removeEmpty - 是否移除空字符串
//
// 返回值:
//
// []string - 去重后的字符串切片
//
// 注意:
// 1. 使用map实现去重,不保证顺序
// 2. 当removeEmpty为true时,会移除所有空字符串
//
// 示例:
//
// list := []string{"apple", "banana", "apple", "", "Banana"}
// result := GetNoRepeatList(list, true) // 返回["apple", "banana", "Banana"]
func GetNoRepeatList(list []string, removeEmpty bool) []string {
var result []string
tmpMap := make(map[string]bool)
for i := 0; i < len(list); i++ {
if _, ok := tmpMap[list[i]]; !ok {
if removeEmpty && list[i] == "" {
continue
}
tmpMap[list[i]] = true
result = append(result, list[i])
}
}
return result
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。