1 Star 0 Fork 0

tuboyou/c2

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
slice.go 3.83 KB
一键复制 编辑 原始数据 按行查看 历史
tuboyou 提交于 2025-03-10 18:02 +08:00 . 添加注释
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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/tuboyou/c2.git
git@gitee.com:tuboyou/c2.git
tuboyou
c2
c2
v0.0.4

搜索帮助