mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 15:51:54 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package utils
 | 
						||
 | 
						||
import (
 | 
						||
	"sort"
 | 
						||
	"strings"
 | 
						||
	"unsafe"
 | 
						||
)
 | 
						||
 | 
						||
// UnsafeBytesToString convert bytes to string
 | 
						||
func UnsafeBytesToString(bs []byte) string {
 | 
						||
	return *(*string)(unsafe.Pointer(&bs))
 | 
						||
}
 | 
						||
 | 
						||
// UnsafeStringToBytes convert string to bytes
 | 
						||
func UnsafeStringToBytes(s string) []byte {
 | 
						||
	return *(*[]byte)(unsafe.Pointer(&s))
 | 
						||
}
 | 
						||
 | 
						||
// FormatAddress format address
 | 
						||
func FormatAddress(addr string) string {
 | 
						||
	if strings.HasSuffix(addr, "unix:") {
 | 
						||
		return addr
 | 
						||
	}
 | 
						||
	addr = strings.Replace(addr, " ", "", -1)
 | 
						||
	addr = strings.Replace(addr, "\t", "", -1)
 | 
						||
	addr = strings.Replace(addr, ":", ":", -1)
 | 
						||
	addr = strings.TrimSpace(addr)
 | 
						||
	return addr
 | 
						||
}
 | 
						||
 | 
						||
// FormatAddressList format address list
 | 
						||
func FormatAddressList(addrList []string) []string {
 | 
						||
	result := []string{}
 | 
						||
	for _, addr := range addrList {
 | 
						||
		result = append(result, FormatAddress(addr))
 | 
						||
	}
 | 
						||
	return result
 | 
						||
}
 | 
						||
 | 
						||
// ToValidUTF8string 去除字符串中的非UTF-8字符
 | 
						||
func ToValidUTF8string(v string) string {
 | 
						||
	return strings.ToValidUTF8(v, "")
 | 
						||
}
 | 
						||
 | 
						||
// EqualStrings 检查两个字符串slice内容是否一致
 | 
						||
func EqualStrings(s1 []string, s2 []string) bool {
 | 
						||
	if len(s1) != len(s2) {
 | 
						||
		return false
 | 
						||
	}
 | 
						||
	sort.Strings(s1)
 | 
						||
	sort.Strings(s2)
 | 
						||
	for index, v1 := range s1 {
 | 
						||
		if v1 != s2[index] {
 | 
						||
			return false
 | 
						||
		}
 | 
						||
	}
 | 
						||
	return true
 | 
						||
}
 | 
						||
 | 
						||
// CutPrefix returns s without the provided leading prefix string
 | 
						||
// and reports whether it found the prefix.
 | 
						||
// If s doesn't start with prefix, CutPrefix returns s, false.
 | 
						||
// If prefix is the empty string, CutPrefix returns s, true.
 | 
						||
//
 | 
						||
// copy from go source
 | 
						||
func CutPrefix(s, prefix string) (after string, found bool) {
 | 
						||
	if !strings.HasPrefix(s, prefix) {
 | 
						||
		return s, false
 | 
						||
	}
 | 
						||
	return s[len(prefix):], true
 | 
						||
}
 |