package Utils
import (
"bytes"
"fmt"
"regexp"
"strconv"
"strings"
)
func ToInt(str string) int {
_num, _ := strconv.Atoi(str)
return _num
}
func ToInt64(str string) int64 {
_num, _ := strconv.ParseInt(str, 10, 64)
return _num
}
func ToInteger(str string) (int, error) {
_num, _err := strconv.Atoi(str)
return _num, _err
}
func ToLong(str string) (int64, error) {
_num, _err := strconv.ParseInt(str, 10, 64)
return _num, _err
}
func ToFloat64(str string) (float64, error) {
_num, _err := strconv.ParseFloat(str, 64)
return _num, _err
}
func BinaryToInt(str string) (int64, error) {
_num, _err := strconv.ParseInt(str, 2, 64)
return _num, _err
}
func IntToBinary(num int64) string {
bin := strconv.FormatInt(num, 2)
return bin
}
func IsBinaryOverInt(binStr string, number int64) bool {
_num, _ := strconv.ParseInt(binStr, 2, 64)
return (_num & number) == number
}
func IsBinNumOverInt(binNum int64, number int64) bool {
return (binNum & number) == number
}
func ToStr(_num int) string {
return strconv.Itoa(_num)
}
func FormatInt(_num int) string {
return strconv.FormatInt(int64(_num), 10)
}
func FormatInt64(_num int64) string {
return strconv.FormatInt(_num, 10)
}
func FormatFloat64(_num float64) string {
return strconv.FormatFloat(_num, 'f', 2, 64)
}
func IsEmpty(str string) bool {
return Len(str) <= 0
}
func IsNotEmpty(str string) bool {
return !IsEmpty(str)
}
func Replace(str string, find string, to string) string {
return strings.Replace(str, find, to, 1)
}
func ReplaceAll(str string, find string, to string) string {
return strings.Replace(str, find, to, -1)
}
func Split(str string, spChar string) []string {
return strings.Split(str, spChar)
}
func Contains(str string, find string) bool {
return strings.Contains(str, find)
}
// strings.HasPrefix("ABC_xyz", "ABC")
func StartsWith(str string, find string) bool {
return strings.HasPrefix(str, find)
}
// strings.HasSuffix("ABC_xyz", "xyz")
func EndsWith(str string, find string) bool {
return strings.HasSuffix(str, find)
}
// strings.Count("cheese", "e") = 3
func Count(str string, find string) int {
return strings.Count(str, find)
}
// 返回第一个匹配字符的位置,返回-1为未找到
// strings.Index("ABC_xyz", "xyz") = 4
// strings.Index("ABC_xyz", "B") = 1
func Index(str string, find string) int {
return strings.Index(str, find)
}
//strings.Join(arrays, ",") = "foo, bar, bas"
func Join(strs []string, spChar string) string {
return strings.Join(strs, spChar)
}
// 字母转为小写
// strings.ToLower("Love GoLang") = "love golang"
func ToLower(str string) string {
return strings.ToLower(str)
}
// 字母转为大写
// strings.ToTitle("love 中国") = "LOVE 中国"
func ToUpper(str string) string {
return strings.ToUpper(str)
//return strings.ToTitle(str)
}
func Len(str string) int {
return len(str)
}
func Print(str string) {
//var show = fmt.Println
//show(str)
fmt.Println(str)
}
func FilterByRegex(expr, input, placeTo string) string {
regx, _ := regexp.Compile(expr)
return regx.ReplaceAllString(input, placeTo)
}
func FilterStyle(input string) string {
//regx, _ := regexp.Compile("")
return regx.ReplaceAllString(input, "")
}
func FilterScript(input string) string {
//regx, _ := regexp.Compile("")
return regx.ReplaceAllString(input, "")
}
func FilterHtml(input string) string {
regx, _ := regexp.Compile("<.+?>")
//regx, _ := regexp.Compile("\\<[\\S\\s]+?\\>")
return regx.ReplaceAllString(input, "")
}
func FilterA(input string) string {
regx, _ := regexp.Compile("<.?a(.|\n)*?>")
return regx.ReplaceAllString(input, "")
}
func FilterImage(input string) string {
regx, _ := regexp.Compile("
")
return regx.ReplaceAllString(input, "")
}
func FilterSpecialChar(input string) string {
regx, _ := regexp.Compile("[+=|{}':;',]")
return regx.ReplaceAllString(input, "")
}
func FilterUrlPrefix(input string) string {
regx, _ := regexp.Compile("\\w+://")
return regx.ReplaceAllString(input, "")
}
func IsNumber(input string) bool {
match, _ := regexp.MatchString("^\\d+$", input)
return match
}
func IsIP(input string) bool {
match, _ := regexp.MatchString("^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$", input)
return match
}
func IsEMail(input string) bool {
match, _ := regexp.MatchString("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$", input)
return match
}
//高效拼接字符串
func LinkStrs(inputs ...string) string {
var buf bytes.Buffer
for _, v := range inputs {
buf.WriteString(v)
}
return buf.String()
}
func LinkInputs(inputs ...interface{}) string {
var buf bytes.Buffer
for _, v := range inputs {
switch t := v.(type) {
case string:
buf.WriteString(t)
default:
buf.WriteString(fmt.Sprint(t))
}
}
return buf.String()
}
// func LinkInputs(inputs ...interface{}) string {
// var buf bytes.Buffer
// for _, v := range inputs {
// switch t := v.(type) {
// case string:
// buf.WriteString(t)
// //case int, int64:
// case int64:
// buf.WriteString(FormatInt64(t))
// case int:
// buf.WriteString(FormatInt(t))
// case float64:
// buf.WriteString(FormatFloat64(t))
// default:
// buf.WriteString(fmt.Sprint(t))
// }
// fmt.Println("v:", v)
// }
// return buf.String()
// }