stringutil.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // stringutil 包含有用于处理字符串的工具函数。
  2. package tools
  3. import (
  4. "crypto/md5"
  5. "encoding/hex"
  6. "github.com/gobuffalo/packr/v2"
  7. "golang.org/x/net/html/charset"
  8. "golang.org/x/text/encoding"
  9. "golang.org/x/text/encoding/unicode"
  10. "golang.org/x/text/transform"
  11. "io/ioutil"
  12. "net/http"
  13. "strings"
  14. )
  15. //获取URL的GET参数
  16. func GetUrlArg(r *http.Request, name string) string {
  17. var arg string
  18. values := r.URL.Query()
  19. arg = values.Get(name)
  20. return arg
  21. }
  22. // Reverse 将其实参字符串以符文为单位左右反转。
  23. func Reverse(s string) string {
  24. r := []rune(s)
  25. for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
  26. r[i], r[j] = r[j], r[i]
  27. }
  28. return string(r)
  29. }
  30. //转换编码
  31. func Encoding(html string, ct string) string {
  32. e, name := DetermineEncoding(html)
  33. if name != "utf-8" {
  34. html = ConvertToStr(html, "gbk", "utf-8")
  35. e = unicode.UTF8
  36. }
  37. r := strings.NewReader(html)
  38. utf8Reader := transform.NewReader(r, e.NewDecoder())
  39. //将其他编码的reader转换为常用的utf8reader
  40. all, _ := ioutil.ReadAll(utf8Reader)
  41. return string(all)
  42. }
  43. func DetermineEncoding(html string) (encoding.Encoding, string) {
  44. e, name, _ := charset.DetermineEncoding([]byte(html), "")
  45. return e, name
  46. }
  47. //获取文件内容,可以打包到二进制
  48. func FileGetContent(file string) string {
  49. str := ""
  50. box := packr.New("tmpl", "../static")
  51. content, err := box.FindString(file)
  52. if err != nil {
  53. return str
  54. }
  55. return content
  56. }
  57. //md5加密
  58. func Md5(src string) string {
  59. m := md5.New()
  60. m.Write([]byte(src))
  61. res := hex.EncodeToString(m.Sum(nil))
  62. return res
  63. }