stringutil

package
v1.1.0-beta.0...-8e1a47d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// PatMatch is the enumeration value for per-character match.
	PatMatch = iota + 1
	// PatOne is the enumeration value for '_' match.
	PatOne
	// PatAny is the enumeration value for '%' match.
	PatAny
)

Variables

View Source
var ErrSyntax = errors.New("invalid syntax")

ErrSyntax indicates that a value does not have the right syntax for the target type.

Functions

func BuildStringFromLabels

func BuildStringFromLabels(labels map[string]string) string

BuildStringFromLabels construct config labels into string by following format: "keyA=valueA,keyB=valueB"

func CompileLike2Regexp

func CompileLike2Regexp(str string) string

CompileLike2Regexp convert a like `lhs` to a regular expression

func CompilePattern

func CompilePattern(pattern string, escape byte) (patWeights []rune, patTypes []byte)

CompilePattern is an adapter for `CompilePatternInner`, `pattern` can be any unicode string.

func CompilePatternBinary

func CompilePatternBinary(pattern string, escape byte) (patChars, patTypes []byte)

CompilePatternBinary is used for binary strings.

func CompilePatternInner

func CompilePatternInner(pattern string, escape byte) (patWeights []rune, patTypes []byte)

CompilePatternInner handles escapes and wild cards convert pattern characters and pattern types. Note: if anything changes in this method, please double-check CompilePatternInnerBytes

func CompilePatternInnerBinary

func CompilePatternInnerBinary(pattern string, escape byte) (patWeights, patTypes []byte)

CompilePatternInnerBinary handles escapes and wild cards convert pattern characters and pattern types in bytes. The main algorithm is the same as CompilePatternInner. However, it's not easy to use interface/lambda to hide the different details here. Note: if anything changes in this method, please double-check CompilePatternInner

func ConvertPosInUtf8

func ConvertPosInUtf8(str *string, pos int64) int64

ConvertPosInUtf8 converts a binary index to the position which shows the occurrence location in the utf8 string Take "你好" as example:

binary index for "好" is 3, ConvertPosInUtf8("你好", 3) should return 2

func Copy

func Copy(src string) string

Copy deep copies a string.

func DoMatch

func DoMatch(str string, patChars []rune, patTypes []byte) bool

DoMatch is an adapter for `DoMatchCustomized`, `str` can be any unicode string.

func DoMatchBinary

func DoMatchBinary(str string, patChars, patTypes []byte) bool

DoMatchBinary is an adapter for `DoMatchInner`, `str` is binary strings or ascii string.

func DoMatchCustomized

func DoMatchCustomized(str string, patWeights []rune, patTypes []byte, matcher func(a, b rune) bool) bool

DoMatchCustomized is an adapter for `DoMatchInner`, `str` can be any unicode string.

func Escape

func Escape(str string, sqlMode mysql.SQLMode) string

Escape the identifier for pretty-printing. For instance, the identifier

"foo `bar`" will become "`foo ``bar```".

The sqlMode controls whether to escape with backquotes (`) or double quotes (`"`) depending on whether mysql.ModeANSIQuotes is enabled.

func EscapeGlobQuestionMark

func EscapeGlobQuestionMark(s string) string

EscapeGlobQuestionMark escapes '?' for a glob path pattern.

func GetTailSpaceCount

func GetTailSpaceCount(str string) int64

GetTailSpaceCount returns the number of tailed spaces.

func IsExactMatch

func IsExactMatch(patTypes []byte) bool

IsExactMatch return true if no wildcard character

func IsLowerASCII

func IsLowerASCII(c byte) bool

IsLowerASCII judges if this is lower alphabet

func IsNumericASCII

func IsNumericASCII(c byte) bool

IsNumericASCII judges if a byte is numeric

func IsUpperASCII

func IsUpperASCII(c byte) bool

IsUpperASCII judges if this is capital alphabet

func LowerOneString

func LowerOneString(str []byte)

LowerOneString lowers the ascii characters in a string

func LowerOneStringExcludeEscapeChar

func LowerOneStringExcludeEscapeChar(str []byte, escapeChar byte) byte

LowerOneStringExcludeEscapeChar lowers strings and exclude an escape char

When escape_char is a capital char, we shouldn't lower the escape char. For example, 'aaaa' ilike 'AAAA' escape 'A', we should convert 'AAAA' to 'AaAa'. If we do not exclude the escape char, 'AAAA' will be lowered to 'aaaa', and we can not get the correct result.

When escape_char is a lower char, we need to convert it to the capital char Because: when lowering "ABC" with escape 'a', after lower, "ABC" -> "abc", then 'a' will be an escape char and it is not expected. Morever, when escape char is uppered we need to tell it to the caller.

func MemoizeStr

func MemoizeStr(l func() string) fmt.Stringer

MemoizeStr returns memoized version of stringFunc. When the result of l is not "", it will be cached and returned directly next time.

MemoizeStr is not concurrency safe.

func TrimUtf8String

func TrimUtf8String(str *string, trimmedNum int64) int64

TrimUtf8String needs the string input should always be valid which means that it should always return true in utf8.ValidString(str)

func Unquote

func Unquote(s string) (t string, err error)

Unquote interprets s as a single-quoted, double-quoted, or backquoted Go string literal, returning the string value that s quotes. For example: test=`"\"\n"` (hex: 22 5c 22 5c 6e 22) should be converted to `"\n` (hex: 22 0a).

func UnquoteChar

func UnquoteChar(s string, quote byte) (value []byte, tail string, err error)

UnquoteChar decodes the first character or byte in the escaped string or character literal represented by the string s. It returns four values:

1) value, the decoded Unicode code point or byte value; 2) multibyte, a boolean indicating whether the decoded character requires a multibyte UTF-8 representation; 3) tail, the remainder of the string after the character; and 4) an error that will be nil if the character is syntactically valid.

The second argument, quote, specifies the type of literal being parsed and therefore which escaped quote character is permitted. If set to a single quote, it permits the sequence \' and disallows unescaped '. If set to a double quote, it permits \" and disallows unescaped ". If set to zero, it does not permit either escape and allows both quote characters to appear unescaped. Different with strconv.UnquoteChar, it permits unnecessary backslash.

func Utf8Len

func Utf8Len(b byte) int

Utf8Len calculates how many bytes the utf8 character takes. This b parameter should be the first byte of utf8 character

Types

type StringerFunc

type StringerFunc func() string

StringerFunc defines string func implement fmt.Stringer.

func (StringerFunc) String

func (l StringerFunc) String() string

String implements fmt.Stringer

type StringerStr

type StringerStr string

StringerStr defines a alias to normal string. implement fmt.Stringer

func (StringerStr) String

func (i StringerStr) String() string

String implements fmt.Stringer

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL