it will not ignore spaces
(fn func(r rune) bool, remove bool)
| 96 | |
| 97 | // it will not ignore spaces |
| 98 | func (s String) splitBy(fn func(r rune) bool, remove bool) []string { |
| 99 | if s.IsEmptyOrSpace() { |
| 100 | return nil |
| 101 | } |
| 102 | var list []string |
| 103 | buffer := new(bytes.Buffer) |
| 104 | for _, r := range s.source { |
| 105 | if fn(r) { |
| 106 | if buffer.Len() != 0 { |
| 107 | list = append(list, buffer.String()) |
| 108 | buffer.Reset() |
| 109 | } |
| 110 | if !remove { |
| 111 | buffer.WriteRune(r) |
| 112 | } |
| 113 | continue |
| 114 | } |
| 115 | buffer.WriteRune(r) |
| 116 | } |
| 117 | if buffer.Len() != 0 { |
| 118 | list = append(list, buffer.String()) |
| 119 | } |
| 120 | return list |
| 121 | } |
| 122 | |
| 123 | func ContainsAny(s string, runes ...rune) bool { |
| 124 | if len(runes) == 0 { |