package strutil

import 

/*************************************************************
 * String filtering
 *************************************************************/

// Trim string. if cutSet is empty, will trim SPACE.
func ( string,  ...string) string {
	if  := len();  > 0 && [0] != "" {
		if  == 1 {
			return strings.Trim(, [0])
		}

		return strings.Trim(, strings.Join(, ""))
	}

	return strings.TrimSpace()
}

// Ltrim alias of TrimLeft
func ( string,  ...string) string { return TrimLeft(, ...) }

// LTrim alias of TrimLeft
func ( string,  ...string) string { return TrimLeft(, ...) }

// TrimLeft char in the string. if cutSet is empty, will trim SPACE.
func ( string,  ...string) string {
	if  := len();  > 0 && [0] != "" {
		if  == 1 {
			return strings.TrimLeft(, [0])
		}

		return strings.TrimLeft(, strings.Join(, ""))
	}

	return strings.TrimLeft(, " ")
}

// Rtrim alias of TrimRight
func ( string,  ...string) string { return TrimRight(, ...) }

// RTrim alias of TrimRight
func ( string,  ...string) string { return TrimRight(, ...) }

// TrimRight char in the string. if cutSet is empty, will trim SPACE.
func ( string,  ...string) string {
	if  := len();  > 0 && [0] != "" {
		if  == 1 {
			return strings.TrimRight(, [0])
		}
		return strings.TrimRight(, strings.Join(, ""))
	}

	return strings.TrimRight(, " ")
}

// FilterEmail filter email, clear invalid chars.
func ( string) string {
	 = strings.TrimSpace()
	 := strings.LastIndex(, "@")
	if  == -1 {
		return 
	}

	// According to rfc5321, "The local-part of a mailbox MUST BE treated as case-sensitive"
	return [0:] + "@" + strings.ToLower([+1:])
}

// func Filter(ss []string, fls ...comdef.StringMatchFunc) []string  {
// }