github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/strings/strings.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package strings implements simple functions to manipulate UTF-8 encoded strings. 6 // 7 // For information about UTF-8 strings in Go, see https://blog.golang.org/strings. 8 package strings 9 10 import ( 11 "github.com/shogo82148/std/unicode" 12 ) 13 14 // Countは、s内の重複しないsubstrのインスタンス数を数えます。 15 // substrが空の文字列の場合、Countはs内のUnicodeコードポイントの数に1を加えたものを返します。 16 func Count(s, substr string) int 17 18 // Containsは、substrがs内に含まれているかどうかを報告します。 19 func Contains(s, substr string) bool 20 21 // ContainsAnyは、chars内の任意のUnicodeコードポイントがs内に含まれているかどうかを報告します。 22 func ContainsAny(s, chars string) bool 23 24 // ContainsRuneは、Unicodeコードポイントrがs内に含まれているかどうかを報告します。 25 func ContainsRune(s string, r rune) bool 26 27 // ContainsFuncは、s内の任意のUnicodeコードポイントrがf(r)を満たすかどうかを報告します。 28 func ContainsFunc(s string, f func(rune) bool) bool 29 30 // LastIndexは、s内のsubstrの最後のインスタンスのインデックスを返します。 31 // substrがs内に存在しない場合は-1を返します。 32 func LastIndex(s, substr string) int 33 34 // IndexByteは、s内の最初のcのインスタンスのインデックスを返します。 35 // cがsに存在しない場合は-1を返します。 36 func IndexByte(s string, c byte) int 37 38 // IndexRuneは、Unicodeコードポイントrの最初のインスタンスのインデックスを返します。 39 // rがsに存在しない場合は-1を返します。 40 // rがutf8.RuneErrorの場合、無効なUTF-8バイトシーケンスの最初のインスタンスを返します。 41 func IndexRune(s string, r rune) int 42 43 // IndexAnyは、sにcharsの任意のUnicodeコードポイントの最初のインスタンスのインデックスを返します。 44 // charsのUnicodeコードポイントがsに存在しない場合は-1を返します。 45 func IndexAny(s, chars string) int 46 47 // LastIndexAnyは、sにcharsの任意のUnicodeコードポイントの最後のインスタンスのインデックスを返します。 48 // charsのUnicodeコードポイントがsに存在しない場合は-1を返します。 49 func LastIndexAny(s, chars string) int 50 51 // LastIndexByteは、sの最後のインスタンスのインデックスを返します。 52 // cがsに存在しない場合は-1を返します。 53 func LastIndexByte(s string, c byte) int 54 55 // SplitNは、sをsepで区切った部分文字列のスライスを返します。 56 // 57 // countは、返す部分文字列の数を決定します。 58 // 59 // n > 0:最大n個の部分文字列。最後の部分文字列は区切り文字以降の残りの部分です。 60 // n == 0:結果はnil(部分文字列がゼロ個) 61 // n < 0:すべての部分文字列 62 // 63 // sとsepのエッジケース(空の文字列など)は、 [Split] のドキュメントで説明されているように処理されます。 64 // 65 // 最初の区切り文字を基準に分割するには、Cutを参照してください。 66 func SplitN(s, sep string, n int) []string 67 68 // SplitAfterNは、sをsepの後にスライスし、それらの部分文字列のスライスを返します。 69 // 70 // countは、返す部分文字列の数を決定します。 71 // 72 // n > 0:最大n個の部分文字列。最後の部分文字列は区切り文字以降の残りの部分です。 73 // n == 0:結果はnil(部分文字列がゼロ個) 74 // n < 0:すべての部分文字列 75 // 76 // sとsepのエッジケース(空の文字列など)は、SplitAfterのドキュメントで説明されているように処理されます。 77 func SplitAfterN(s, sep string, n int) []string 78 79 // Splitは、sをsepで区切り、それらの区切り文字の間の部分文字列のスライスを返します。 80 // 81 // sがsepを含まず、sepが空でない場合、Splitは長さ1のスライスを返します。その唯一の要素はsです。 82 // 83 // sepが空の場合、Splitは各UTF-8シーケンスの後に分割します。sとsepの両方が空の場合、Splitは空のスライスを返します。 84 // 85 // countが-1の [SplitN] と同等です。 86 // 87 // 最初の区切り文字を基準に分割するには、Cutを参照してください。 88 func Split(s, sep string) []string 89 90 // SplitAfterは、sをsepの後にスライスし、それらの部分文字列のスライスを返します。 91 // 92 // sがsepを含まず、sepが空でない場合、SplitAfterは長さ1のスライスを返します。その唯一の要素はsです。 93 // 94 // sepが空の場合、SplitAfterは各UTF-8シーケンスの後に分割します。sとsepの両方が空の場合、SplitAfterは空のスライスを返します。 95 // 96 // countが-1の [SplitAfterN] と同等です。 97 func SplitAfter(s, sep string) []string 98 99 // Fieldsは、sをUnicode.IsSpaceによって定義される1つ以上の連続する空白文字の各インスタンスで分割し、sの部分文字列のスライスまたは空のスライスを返します。 100 func Fields(s string) []string 101 102 // FieldsFuncは、Unicodeコードポイントcがf(c)を満たす連続するランで文字列sを分割し、sのスライスの配列を返します。 103 // sのすべてのコードポイントがf(c)を満たすか、文字列が空の場合、空のスライスが返されます。 104 // 105 // FieldsFuncは、f(c)を呼び出す順序について保証せず、fが常に同じ値を返すことを前提としています。 106 func FieldsFunc(s string, f func(rune) bool) []string 107 108 // Joinは、最初の引数の要素を連結して単一の文字列を作成します。区切り文字列sepは、結果の文字列の要素間に配置されます。 109 func Join(elems []string, sep string) string 110 111 // HasPrefixは、文字列sがprefixで始まるかどうかを報告します。 112 func HasPrefix(s, prefix string) bool 113 114 // HasSuffixは、文字列sがsuffixで終わるかどうかを報告します。 115 func HasSuffix(s, suffix string) bool 116 117 // Mapは、マッピング関数に従ってすべての文字を変更した文字列sのコピーを返します。 118 // マッピング関数が負の値を返す場合、文字は置換されずに文字列から削除されます。 119 func Map(mapping func(rune) rune, s string) string 120 121 // Repeatは、文字列sのcount個のコピーからなる新しい文字列を返します。 122 // 123 // countが負の場合、または(len(s) * count)の結果がオーバーフローする場合、パニックが発生します。 124 func Repeat(s string, count int) string 125 126 // ToUpperは、すべてのUnicode文字を大文字にマップしたsを返します。 127 func ToUpper(s string) string 128 129 // ToLowerは、すべてのUnicode文字を小文字にマップしたsを返します。 130 func ToLower(s string) string 131 132 // ToTitleは、すべてのUnicode文字をUnicodeタイトルケースにマップしたsのコピーを返します。 133 func ToTitle(s string) string 134 135 // ToUpperSpecialは、Unicode文字をすべて、cで指定されたケースマッピングを使用して大文字にマップしたsのコピーを返します。 136 func ToUpperSpecial(c unicode.SpecialCase, s string) string 137 138 // ToLowerSpecialは、Unicode文字をすべて、cで指定されたケースマッピングを使用して小文字にマップしたsのコピーを返します。 139 func ToLowerSpecial(c unicode.SpecialCase, s string) string 140 141 // ToTitleSpecialは、Unicode文字をすべて、特別なケースルールに優先してUnicodeタイトルケースにマップしたsのコピーを返します。 142 func ToTitleSpecial(c unicode.SpecialCase, s string) string 143 144 // ToValidUTF8は、無効なUTF-8バイトシーケンスのランを置換文字列で置き換えたsのコピーを返します。置換文字列は空にすることができます。 145 func ToValidUTF8(s, replacement string) string 146 147 // Titleは、単語の先頭を表すすべてのUnicode文字をUnicodeタイトルケースにマップしたsのコピーを返します。 148 // 149 // Deprecated: Titleが単語の境界に使用するルールは、Unicode句読点を適切に処理しません。代わりに、golang.org/x/text/casesを使用してください。 150 func Title(s string) string 151 152 // TrimLeftFuncは、f(c)がtrueを返す最初のUnicodeコードポイントcを含まないように、文字列sの先頭からすべてのUnicodeコードポイントcを削除したスライスを返します。 153 func TrimLeftFunc(s string, f func(rune) bool) string 154 155 // TrimRightFuncは、f(c)がtrueを返す最後のUnicodeコードポイントcを含まないように、文字列sの末尾からすべてのUnicodeコードポイントcを削除したスライスを返します。 156 func TrimRightFunc(s string, f func(rune) bool) string 157 158 // TrimFuncは、f(c)がtrueを返す最初と最後のUnicodeコードポイントcを含まないように、文字列sの先頭と末尾からすべてのUnicodeコードポイントcを削除したスライスを返します。 159 func TrimFunc(s string, f func(rune) bool) string 160 161 // IndexFuncは、f(c)がtrueを返す最初のUnicodeコードポイントのインデックスを返します。見つからない場合は-1を返します。 162 func IndexFunc(s string, f func(rune) bool) int 163 164 // LastIndexFuncは、f(c)がtrueを返す最後のUnicodeコードポイントのインデックスを返します。見つからない場合は-1を返します。 165 func LastIndexFunc(s string, f func(rune) bool) int 166 167 // Trimは、cutsetに含まれるすべての先頭と末尾のUnicodeコードポイントを削除した文字列sのスライスを返します。 168 func Trim(s, cutset string) string 169 170 // TrimLeftは、cutsetに含まれるすべての先頭のUnicodeコードポイントを削除した文字列sのスライスを返します。 171 // 172 // 接頭辞を削除するには、代わりに [TrimPrefix] を使用してください。 173 func TrimLeft(s, cutset string) string 174 175 // TrimRightは、cutsetに含まれるすべての末尾のUnicodeコードポイントを削除した文字列sのスライスを返します。 176 // 177 // 接尾辞を削除するには、代わりに [TrimSuffix] を使用してください。 178 func TrimRight(s, cutset string) string 179 180 // TrimSpaceは、Unicodeで定義されるように、すべての先頭と末尾の空白を削除した文字列sのスライスを返します。 181 func TrimSpace(s string) string 182 183 // TrimPrefixは、指定された接頭辞文字列を除いたsを返します。 184 // sが接頭辞で始まらない場合、sは変更されずにそのまま返されます。 185 func TrimPrefix(s, prefix string) string 186 187 // TrimSuffixは、指定された接尾辞文字列を除いたsを返します。 188 // sが接尾辞で終わらない場合、sは変更されずにそのまま返されます。 189 func TrimSuffix(s, suffix string) string 190 191 // Replaceは、古いものの最初のn個の重複しないインスタンスが新しいものに置き換えられた文字列sのコピーを返します。 192 // oldが空の場合、文字列の先頭と各UTF-8シーケンスの後に一致し、kルーン文字列に対してk+1の置換が生成されます。 193 // n < 0の場合、置換の数に制限はありません。 194 func Replace(s, old, new string, n int) string 195 196 // ReplaceAllは、古いもののすべての重複しないインスタンスが新しいものに置き換えられた文字列sのコピーを返します。 197 // oldが空の場合、文字列の先頭と各UTF-8シーケンスの後に一致し、kルーン文字列に対してk+1の置換が生成されます。 198 func ReplaceAll(s, old, new string) string 199 200 // EqualFoldは、UTF-8文字列として解釈されたsとtが、単純なUnicodeの大文字小文字を区別しない比較において等しいかどうかを報告します。 201 // これは、大文字小文字を区別しない形式の大文字小文字を区別しない性質です。 202 func EqualFold(s, t string) bool 203 204 // Indexは、s内のsubstrの最初のインスタンスのインデックスを返します。substrがsに存在しない場合は-1を返します。 205 func Index(s, substr string) int 206 207 // 最初の sep のインスタンスを中心に s をスライスし、 208 // sep の前と後のテキストを返します。 209 // found は、sep が s に現れるかどうかを報告します。 210 // sep が s に現れない場合、cut は s、""、false を返します。 211 func Cut(s, sep string) (before, after string, found bool) 212 213 // CutPrefix は、指定された先頭接頭辞文字列を除いた s を返し、接頭辞が見つかったかどうかを報告します。 214 // s が prefix で始まらない場合、CutPrefix は s、false を返します。 215 // prefix が空の文字列の場合、CutPrefix は s、true を返します。 216 func CutPrefix(s, prefix string) (after string, found bool) 217 218 // CutSuffix は、指定された末尾接尾辞文字列を除いた s を返し、接尾辞が見つかったかどうかを報告します。 219 // s が suffix で終わらない場合、CutSuffix は s、false を返します。 220 // suffix が空の文字列の場合、CutSuffix は s、true を返します。 221 func CutSuffix(s, suffix string) (before string, found bool)