github.com/joomcode/cue@v0.4.4-0.20221111115225-539fe3512047/pkg/strings/strings.go (about) 1 // Copyright 2020 The CUE Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Copyright 2018 The Go Authors. All rights reserved. 16 // Use of this source code is governed by a BSD-style 17 // license that can be found in the LICENSE file. 18 19 // Generated with go run github.com/joomcode/cue/internal/cmd/qgo -exclude=Rune$,Func$,^Map$,Special$,EqualFold,Byte,Title$,ToValidUTF8,All$ extract strings 20 21 package strings 22 23 import "strings" 24 25 // Compare returns an integer comparing two strings lexicographically. 26 // The result will be 0 if a==b, -1 if a < b, and +1 if a > b. 27 // 28 // Compare is included only for symmetry with package bytes. 29 // It is usually clearer and always faster to use the built-in 30 // string comparison operators ==, <, >, and so on. 31 func Compare(a, b string) int { 32 return strings.Compare(a, b) 33 } 34 35 // Count counts the number of non-overlapping instances of substr in s. 36 // If substr is an empty string, Count returns 1 + the number of Unicode code points in s. 37 func Count(s, substr string) int { 38 return strings.Count(s, substr) 39 } 40 41 // Contains reports whether substr is within s. 42 func Contains(s, substr string) bool { 43 return strings.Contains(s, substr) 44 } 45 46 // ContainsAny reports whether any Unicode code points in chars are within s. 47 func ContainsAny(s, chars string) bool { 48 return strings.ContainsAny(s, chars) 49 } 50 51 // LastIndex returns the index of the last instance of substr in s, or -1 if substr is not present in s. 52 func LastIndex(s, substr string) int { 53 return strings.LastIndex(s, substr) 54 } 55 56 // IndexAny returns the index of the first instance of any Unicode code point 57 // from chars in s, or -1 if no Unicode code point from chars is present in s. 58 func IndexAny(s, chars string) int { 59 return strings.IndexAny(s, chars) 60 } 61 62 // LastIndexAny returns the index of the last instance of any Unicode code 63 // point from chars in s, or -1 if no Unicode code point from chars is 64 // present in s. 65 func LastIndexAny(s, chars string) int { 66 return strings.LastIndexAny(s, chars) 67 } 68 69 // SplitN slices s into substrings separated by sep and returns a slice of 70 // the substrings between those separators. 71 // 72 // The count determines the number of substrings to return: 73 // n > 0: at most n substrings; the last substring will be the unsplit remainder. 74 // n == 0: the result is nil (zero substrings) 75 // n < 0: all substrings 76 // 77 // Edge cases for s and sep (for example, empty strings) are handled 78 // as described in the documentation for Split. 79 func SplitN(s, sep string, n int) []string { 80 return strings.SplitN(s, sep, n) 81 } 82 83 // SplitAfterN slices s into substrings after each instance of sep and 84 // returns a slice of those substrings. 85 // 86 // The count determines the number of substrings to return: 87 // n > 0: at most n substrings; the last substring will be the unsplit remainder. 88 // n == 0: the result is nil (zero substrings) 89 // n < 0: all substrings 90 // 91 // Edge cases for s and sep (for example, empty strings) are handled 92 // as described in the documentation for SplitAfter. 93 func SplitAfterN(s, sep string, n int) []string { 94 return strings.SplitAfterN(s, sep, n) 95 } 96 97 // Split slices s into all substrings separated by sep and returns a slice of 98 // the substrings between those separators. 99 // 100 // If s does not contain sep and sep is not empty, Split returns a 101 // slice of length 1 whose only element is s. 102 // 103 // If sep is empty, Split splits after each UTF-8 sequence. If both s 104 // and sep are empty, Split returns an empty slice. 105 // 106 // It is equivalent to SplitN with a count of -1. 107 func Split(s, sep string) []string { 108 return strings.Split(s, sep) 109 } 110 111 // SplitAfter slices s into all substrings after each instance of sep and 112 // returns a slice of those substrings. 113 // 114 // If s does not contain sep and sep is not empty, SplitAfter returns 115 // a slice of length 1 whose only element is s. 116 // 117 // If sep is empty, SplitAfter splits after each UTF-8 sequence. If 118 // both s and sep are empty, SplitAfter returns an empty slice. 119 // 120 // It is equivalent to SplitAfterN with a count of -1. 121 func SplitAfter(s, sep string) []string { 122 return strings.SplitAfter(s, sep) 123 } 124 125 // Fields splits the string s around each instance of one or more consecutive white space 126 // characters, as defined by unicode.IsSpace, returning a slice of substrings of s or an 127 // empty slice if s contains only white space. 128 func Fields(s string) []string { 129 return strings.Fields(s) 130 } 131 132 // Join concatenates the elements of its first argument to create a single string. The separator 133 // string sep is placed between elements in the resulting string. 134 func Join(elems []string, sep string) string { 135 return strings.Join(elems, sep) 136 } 137 138 // HasPrefix tests whether the string s begins with prefix. 139 func HasPrefix(s, prefix string) bool { 140 return strings.HasPrefix(s, prefix) 141 } 142 143 // HasSuffix tests whether the string s ends with suffix. 144 func HasSuffix(s, suffix string) bool { 145 return strings.HasSuffix(s, suffix) 146 } 147 148 // Repeat returns a new string consisting of count copies of the string s. 149 // 150 // It panics if count is negative or if 151 // the result of (len(s) * count) overflows. 152 func Repeat(s string, count int) string { 153 return strings.Repeat(s, count) 154 } 155 156 // ToUpper returns s with all Unicode letters mapped to their upper case. 157 func ToUpper(s string) string { 158 return strings.ToUpper(s) 159 } 160 161 // ToLower returns s with all Unicode letters mapped to their lower case. 162 func ToLower(s string) string { 163 return strings.ToLower(s) 164 } 165 166 // Trim returns a slice of the string s with all leading and 167 // trailing Unicode code points contained in cutset removed. 168 func Trim(s, cutset string) string { 169 return strings.Trim(s, cutset) 170 } 171 172 // TrimLeft returns a slice of the string s with all leading 173 // Unicode code points contained in cutset removed. 174 // 175 // To remove a prefix, use TrimPrefix instead. 176 func TrimLeft(s, cutset string) string { 177 return strings.TrimLeft(s, cutset) 178 } 179 180 // TrimRight returns a slice of the string s, with all trailing 181 // Unicode code points contained in cutset removed. 182 // 183 // To remove a suffix, use TrimSuffix instead. 184 func TrimRight(s, cutset string) string { 185 return strings.TrimRight(s, cutset) 186 } 187 188 // TrimSpace returns a slice of the string s, with all leading 189 // and trailing white space removed, as defined by Unicode. 190 func TrimSpace(s string) string { 191 return strings.TrimSpace(s) 192 } 193 194 // TrimPrefix returns s without the provided leading prefix string. 195 // If s doesn't start with prefix, s is returned unchanged. 196 func TrimPrefix(s, prefix string) string { 197 return strings.TrimPrefix(s, prefix) 198 } 199 200 // TrimSuffix returns s without the provided trailing suffix string. 201 // If s doesn't end with suffix, s is returned unchanged. 202 func TrimSuffix(s, suffix string) string { 203 return strings.TrimSuffix(s, suffix) 204 } 205 206 // Replace returns a copy of the string s with the first n 207 // non-overlapping instances of old replaced by new. 208 // If old is empty, it matches at the beginning of the string 209 // and after each UTF-8 sequence, yielding up to k+1 replacements 210 // for a k-rune string. 211 // If n < 0, there is no limit on the number of replacements. 212 func Replace(s, old, new string, n int) string { 213 return strings.Replace(s, old, new, n) 214 } 215 216 // Index returns the index of the first instance of substr in s, or -1 if substr is not present in s. 217 func Index(s, substr string) int { 218 return strings.Index(s, substr) 219 }