在go中使用lua示例, 基于gopher-lua!
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

74 строки
2.0 KiB

4 лет назад
  1. package strings
  2. import (
  3. "strings"
  4. lua "github.com/yuin/gopher-lua"
  5. )
  6. // Split(): lua strings.split(string, sep): port of go string.Split() returns table
  7. func Split(L *lua.LState) int {
  8. str := L.CheckString(1)
  9. delim := L.CheckString(2)
  10. strSlice := strings.Split(str, delim)
  11. result := L.CreateTable(len(strSlice), 0)
  12. for _, str := range strSlice {
  13. result.Append(lua.LString(str))
  14. }
  15. L.Push(result)
  16. return 1
  17. }
  18. // HasPrefix(): lua strings.has_prefix(string, suffix): port of go string.HasPrefix() return bool
  19. func HasPrefix(L *lua.LState) int {
  20. str1 := L.CheckString(1)
  21. str2 := L.CheckString(2)
  22. result := strings.HasPrefix(str1, str2)
  23. L.Push(lua.LBool(result))
  24. return 1
  25. }
  26. // HasSuffix(): lua strings.has_suffix(string, prefix): port of go string.HasSuffix() returns bool
  27. func HasSuffix(L *lua.LState) int {
  28. str1 := L.CheckString(1)
  29. str2 := L.CheckString(2)
  30. result := strings.HasSuffix(str1, str2)
  31. L.Push(lua.LBool(result))
  32. return 1
  33. }
  34. // Trim(): lua strings.trim(string, cutset) Port of go string.Trim() returns string
  35. func Trim(L *lua.LState) int {
  36. str1 := L.CheckString(1)
  37. str2 := L.CheckString(2)
  38. result := strings.Trim(str1, str2)
  39. L.Push(lua.LString(result))
  40. return 1
  41. }
  42. // TrimPrefix(): lua strings.trim_prefix(string, cutset) Port of go string.TrimPrefix() returns string
  43. func TrimPrefix(L *lua.LState) int {
  44. str1 := L.CheckString(1)
  45. str2 := L.CheckString(2)
  46. result := strings.TrimPrefix(str1, str2)
  47. L.Push(lua.LString(result))
  48. return 1
  49. }
  50. // TrimSuffix(): lua strings.trim_suffix(string, cutset) Port of go string.TrimSuffix() returns string
  51. func TrimSuffix(L *lua.LState) int {
  52. str1 := L.CheckString(1)
  53. str2 := L.CheckString(2)
  54. result := strings.TrimSuffix(str1, str2)
  55. L.Push(lua.LString(result))
  56. return 1
  57. }
  58. // Contains(): lua strings.contains(string, cutset) Port of go string.Contains() returns bool
  59. func Contains(L *lua.LState) int {
  60. str1 := L.CheckString(1)
  61. str2 := L.CheckString(2)
  62. result := strings.Contains(str1, str2)
  63. L.Push(lua.LBool(result))
  64. return 1
  65. }