zzq.go 767 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * Copyright (c) 2000-2018, 达梦数据库有限公司.
  3. * All rights reserved.
  4. */
  5. package util
  6. func Split(s string, sep string) []string {
  7. var foot = make([]int, len(s)) // 足够的元素个数
  8. var count, sLen, sepLen = 0, len(s), len(sep)
  9. for i := 0; i < sLen; i++ {
  10. // 处理 s == “-9999-1" && seperators == "-"情况
  11. if i == 0 && sLen >= sepLen {
  12. if s[0:sepLen] == sep {
  13. i += sepLen - 1
  14. continue
  15. }
  16. }
  17. for j := 0; j < sepLen; j++ {
  18. if s[i] == sep[j] {
  19. foot[count] = i
  20. count++
  21. break
  22. }
  23. }
  24. }
  25. var ret = make([]string, count+1)
  26. if count == 0 {
  27. ret[0] = s
  28. return ret
  29. }
  30. ret[0] = s[0:foot[0]]
  31. for i := 1; i < count; i++ {
  32. ret[i] = s[foot[i-1]+1 : foot[i]]
  33. }
  34. ret[count] = s[foot[count-1]+1:]
  35. return ret
  36. }