delight-im / str
字符串的方便面向对象操作
v2.20.0
2022-01-13 17:10 UTC
Requires
- php: >=5.3.0
- ext-mbstring: *
README
字符串的方便面向对象操作
要求
- PHP 5.3.0+
- 多字节字符串扩展 (
mbstring)
- 多字节字符串扩展 (
安装
-
通过 Composer 包含库 [?]
$ composer require delight-im/str -
包含 Composer 自动加载器
require __DIR__ . '/vendor/autoload.php';
用法
通常,您可能希望在 PHP 代码的全局命名空间中设置以下简写
function s($str, $charset = null) { return new \Delight\Str\Str($str, $charset); }
这允许您通过简单地用 s(...) 包装字符串来创建字符串对象。
有了这个简写,创建实例就像这样简单
$str = s('Hello w☺rld'); // or $str = s('Hello w☺rld', 'UTF-8');
然而,如果您不想设置这个简写,您仍然可以轻松创建实例
$str = \Delight\Str\Str::from('Hello w☺rld'); // or $str = \Delight\Str\Str::from('Hello w☺rld', 'UTF-8');
可用方法
startsWithstartsWithBytesstartsWithCodePoints
startsWithIgnoreCasestartsWithBytesIgnoreCasestartsWithCodePointsIgnoreCase
containscontainsBytescontainsCodePoints
containsIgnoreCasecontainsBytesIgnoreCasecontainsCodePointsIgnoreCase
endsWithendsWithBytesendsWithCodePoints
endsWithIgnoreCaseendsWithBytesIgnoreCaseendsWithCodePointsIgnoreCase
trimtrimStarttrimEndfirstfirstBytesfirstCodePoints
lastlastByteslastCodePoints
byteAtcodePointAtisEmptyisAsciiisPrintableAsciitoLowerCasetoLowerCaseBytestoLowerCaseCodePoints
isLowerCasetoUpperCasetoUpperCaseBytestoUpperCaseCodePoints
isUpperCaseisCapitalizedtruncatetruncateBytestruncateCodePoints
truncateSafelytruncateBytesSafelytruncateCodePointsSafely
countcountBytescountCodePoints
lengthlengthInByteslengthInCodePoints
cutStartcutBytesAtStartcutCodePointsAtStart
cutEndcutBytesAtEndcutCodePointsAtEnd
replacereplaceBytesreplaceCodePoints
replaceIgnoreCasereplaceBytesIgnoreCasereplaceCodePointsIgnoreCase
replaceFirstreplaceFirstBytesreplaceFirstCodePoints
replaceFirstIgnoreCasereplaceFirstBytesIgnoreCasereplaceFirstCodePointsIgnoreCase
replacePrefixreplacePrefixBytesreplacePrefixCodePoints
replaceLastreplaceLastBytesreplaceLastCodePoints
replaceLastIgnoreCasereplaceLastBytesIgnoreCasereplaceLastCodePointsIgnoreCase
replaceSuffixreplaceSuffixBytesreplaceSuffixCodePoints
splitsplitBytessplitCodePoints
splitByRegexwordsbeforeFirstbeforeFirstBytesbeforeFirstCodePoints
beforeLastbeforeLastBytesbeforeLastCodePoints
betweenbetweenBytesbetweenCodePoints
afterFirstafterFirstBytesafterFirstCodePoints
afterLastafterLastBytesafterLastCodePoints
matchesequalsequalsIgnoreCasecompareTocompareToBytescompareToCodePoints
compareToIgnoreCasecompareToBytesIgnoreCasecompareToCodePointsIgnoreCase
escapeForHtmlnormalizeLineEndingsreverseacronym
/** * Returns whether this string starts with the supplied other string * * This operation is case-sensitive * * @param string $prefix the other string to search for * @return bool whether the supplied other string can be found at the beginning of this string */ function startsWith($prefix); function startsWithBytes($prefix); function startsWithCodePoints($prefix); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string starts with the supplied other string * * This operation is case-insensitive * * @param string $prefix the other string to search for * @return bool whether the supplied other string can be found at the beginning of this string */ function startsWithIgnoreCase($prefix); function startsWithBytesIgnoreCase($prefix); function startsWithCodePointsIgnoreCase($prefix); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string contains the supplied other string * * This operation is case-sensitive * * @param string $infix the other string to search for * @return bool whether the supplied other string is contained in this string */ function contains($infix); function containsBytes($infix); function containsCodePoints($infix); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string contains the supplied other string * * This operation is case-insensitive * * @param string $infix the other string to search for * @return bool whether the supplied other string is contained in this string */ function containsIgnoreCase($infix); function containsBytesIgnoreCase($infix); function containsCodePointsIgnoreCase($infix); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string ends with the supplied other string * * This operation is case-sensitive * * @param string $suffix the other string to search for * @return bool whether the supplied other string can be found at the end of this string */ function endsWith($suffix); function endsWithBytes($suffix); function endsWithCodePoints($suffix); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string ends with the supplied other string * * This operation is case-insensitive * * @param string $suffix the other string to search for * @return bool whether the supplied other string can be found at the end of this string */ function endsWithIgnoreCase($suffix); function endsWithBytesIgnoreCase($suffix); function endsWithCodePointsIgnoreCase($suffix); //////////////////////////////////////////////////////////////////////////////// /** * Removes all whitespace or the specified characters from both sides of this string * * @param string $charactersToRemove the characters to remove (optional) * @param bool $alwaysRemoveWhitespace whether to remove whitespace even if a custom list of characters is provided (optional) * @return static this instance for chaining */ function trim($charactersToRemove = null, $alwaysRemoveWhitespace = null); //////////////////////////////////////////////////////////////////////////////// /** * Removes all whitespace or the specified characters from the start of this string * * @param string $charactersToRemove the characters to remove (optional) * @param bool $alwaysRemoveWhitespace whether to remove whitespace even if a custom list of characters is provided (optional) * @return static this instance for chaining */ function trimStart($charactersToRemove = null, $alwaysRemoveWhitespace = null); //////////////////////////////////////////////////////////////////////////////// /** * Removes all whitespace or the specified characters from the end of this string * * @param string $charactersToRemove the characters to remove (optional) * @param bool $alwaysRemoveWhitespace whether to remove whitespace even if a custom list of characters is provided (optional) * @return static this instance for chaining */ function trimEnd($charactersToRemove = null, $alwaysRemoveWhitespace = null); //////////////////////////////////////////////////////////////////////////////// /** * Returns the first character or the specified number of characters from the start of this string * * @param int|null $length the number of characters to return from the start (optional) * @return static a new instance of this class */ function first($length = null); function firstBytes($length = null); function firstCodePoints($length = null); //////////////////////////////////////////////////////////////////////////////// /** * Returns the last character or the specified number of characters from the end of this string * * @param int|null $length the number of characters to return from the end (optional) * @return static a new instance of this class */ function last($length = null); function lastBytes($length = null); function lastCodePoints($length = null); //////////////////////////////////////////////////////////////////////////////// /** * Returns the byte at the specified position of this string * * @param int $index the zero-based position of the byte to return * @return string the byte at the specified position */ function byteAt($index); //////////////////////////////////////////////////////////////////////////////// /** * Returns the code point at the specified position of this string * * @param int $index the zero-based position of the code point to return * @return string the code point at the specified position */ function codePointAt($index); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string is empty * * @return bool */ public function isEmpty(); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string consists entirely of ASCII characters * * @return bool */ public function isAscii(); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string consists entirely of printable ASCII characters * * @return bool */ public function isPrintableAscii(); //////////////////////////////////////////////////////////////////////////////// /** * Converts this string to lowercase * * @return static this instance for chaining */ function toLowerCase(); function toLowerCaseBytes(); function toLowerCaseCodePoints(); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string is entirely lowercase * * @return bool */ function isLowerCase(); //////////////////////////////////////////////////////////////////////////////// /** * Converts this string to uppercase * * @return static this instance for chaining */ function toUpperCase(); function toUpperCaseBytes(); function toUpperCaseCodePoints(); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string is entirely uppercase * * @return bool */ function isUpperCase(); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string has its first letter written in uppercase * * @return bool */ function isCapitalized(); //////////////////////////////////////////////////////////////////////////////// /** * Truncates this string so that it has at most the specified length * * @param int $maxLength the maximum length that this string may have (including any ellipsis) * @param string|null $ellipsis the string to use as the ellipsis (optional) * @return static a new instance of this class */ function truncate($maxLength, $ellipsis = null); function truncateBytes($maxLength, $ellipsis = null); function truncateCodePoints($maxLength, $ellipsis = null); //////////////////////////////////////////////////////////////////////////////// /** * Truncates this string so that it has at most the specified length * * This method tries *not* to break any words whenever possible * * @param int $maxLength the maximum length that this string may have (including any ellipsis) * @param string|null $ellipsis the string to use as the ellipsis (optional) * @return static a new instance of this class */ function truncateSafely($maxLength, $ellipsis = null); function truncateBytesSafely($maxLength, $ellipsis = null); function truncateCodePointsSafely($maxLength, $ellipsis = null); //////////////////////////////////////////////////////////////////////////////// /** * Counts the occurrences of the specified substring in this string * * @param string $substring the substring whose occurrences to count * @return int the number of occurrences */ function count($substring = null); function countBytes($substring = null); function countCodePoints($substring = null); //////////////////////////////////////////////////////////////////////////////// /** * Returns the length of this string * * @return int the number of characters */ function length(); function lengthInBytes(); function lengthInCodePoints(); //////////////////////////////////////////////////////////////////////////////// /** * Removes the specified number of characters from the start of this string * * @param int $length the number of characters to remove * @return static a new instance of this class */ function cutStart($length); function cutBytesAtStart($length); function cutCodePointsAtStart($length); //////////////////////////////////////////////////////////////////////////////// /** * Removes the specified number of characters from the end of this string * * @param int $length the number of characters to remove * @return static a new instance of this class */ function cutEnd($length); function cutBytesAtEnd($length); function cutCodePointsAtEnd($length); //////////////////////////////////////////////////////////////////////////////// /** * Replaces all occurrences of the specified search string with the given replacement * * @param string $searchFor the string to search for * @param string $replaceWith the string to use as the replacement (optional) * @return static this instance for chaining */ function replace($searchFor, $replaceWith = null); function replaceBytes($searchFor, $replaceWith = null); function replaceCodePoints($searchFor, $replaceWith = null); //////////////////////////////////////////////////////////////////////////////// /** * Replaces all occurrences of the specified search string with the given replacement * * This operation is case-insensitive * * @param string $searchFor the string to search for * @param string $replaceWith the string to use as the replacement (optional) * @return static a new instance of this class */ function replaceIgnoreCase($searchFor, $replaceWith = null); function replaceBytesIgnoreCase($searchFor, $replaceWith = null); function replaceCodePointsIgnoreCase($searchFor, $replaceWith = null); //////////////////////////////////////////////////////////////////////////////// /** * Replaces the first occurrence of the specified search string with the given replacement * * @param string $searchFor the string to search for * @param string $replaceWith the string to use as the replacement (optional) * @return static a new instance of this class */ function replaceFirst($searchFor, $replaceWith = null); function replaceFirstBytes($searchFor, $replaceWith = null); function replaceFirstCodePoints($searchFor, $replaceWith = null); //////////////////////////////////////////////////////////////////////////////// /** * Replaces the first occurrence of the specified search string with the given replacement * * This operation is case-insensitive * * @param string $searchFor the string to search for * @param string $replaceWith the string to use as the replacement (optional) * @return static a new instance of this class */ function replaceFirstIgnoreCase($searchFor, $replaceWith = null); function replaceFirstBytesIgnoreCase($searchFor, $replaceWith = null); function replaceFirstCodePointsIgnoreCase($searchFor, $replaceWith = null); //////////////////////////////////////////////////////////////////////////////// /** * Replaces the specified part in this string only if it starts with that part * * @param string $searchFor the string to search for * @param string $replaceWith the string to use as the replacement (optional) * @return static a new instance of this class */ function replacePrefix($searchFor, $replaceWith = null); function replacePrefixBytes($searchFor, $replaceWith = null); function replacePrefixCodePoints($searchFor, $replaceWith = null); //////////////////////////////////////////////////////////////////////////////// /** * Replaces the last occurrence of the specified search string with the given replacement * * @param string $searchFor the string to search for * @param string $replaceWith the string to use as the replacement (optional) * @return static a new instance of this class */ function replaceLast($searchFor, $replaceWith = null); function replaceLastBytes($searchFor, $replaceWith = null); function replaceLastCodePoints($searchFor, $replaceWith = null); //////////////////////////////////////////////////////////////////////////////// /** * Replaces the last occurrence of the specified search string with the given replacement * * This operation is case-insensitive * * @param string $searchFor the string to search for * @param string $replaceWith the string to use as the replacement (optional) * @return static a new instance of this class */ function replaceLastIgnoreCase($searchFor, $replaceWith = null); function replaceLastBytesIgnoreCase($searchFor, $replaceWith = null); function replaceLastCodePointsIgnoreCase($searchFor, $replaceWith = null); //////////////////////////////////////////////////////////////////////////////// /** * Replaces the specified part in this string only if it ends with that part * * @param string $searchFor the string to search for * @param string $replaceWith the string to use as the replacement (optional) * @return static a new instance of this class */ function replaceSuffix($searchFor, $replaceWith = null); function replaceSuffixBytes($searchFor, $replaceWith = null); function replaceSuffixCodePoints($searchFor, $replaceWith = null); //////////////////////////////////////////////////////////////////////////////// /** * Splits this string into an array of substrings at the specified delimiter * * @param string $delimiter the delimiter to split the string at * @param int|null $limit the maximum number of substrings to return (optional) * @return static[] an array containing the substrings (which are instances of this class as well) */ function split($delimiter, $limit = null); function splitBytes($delimiter, $limit = null); function splitCodePoints($delimiter, $limit = null); //////////////////////////////////////////////////////////////////////////////// /** * Splits this string into an array of substrings at the specified delimiter pattern * * @param string $delimiterPattern the regular expression (PCRE) to split the string at * @param int|null $limit the maximum number of substrings to return (optional) * @param int|null $flags any combination (bit-wise ORed) of PHP's `PREG_SPLIT_*` flags * @return static[] an array containing the substrings (which are instances of this class as well) */ function splitByRegex($delimiterPattern, $limit = null, $flags = null); //////////////////////////////////////////////////////////////////////////////// /** * Splits this string into its single words * * @param int|null the maximum number of words to return from the start (optional) * @return static[] the new instances of this class */ function words($limit = null); //////////////////////////////////////////////////////////////////////////////// /** * Returns the part of this string *before* the *first* occurrence of the search string * * @param string $search the search string that should delimit the end * @return static a new instance of this class */ function beforeFirst($search); function beforeFirstBytes($search); function beforeFirstCodePoints($search); //////////////////////////////////////////////////////////////////////////////// /** * Returns the part of this string *before* the *last* occurrence of the search string * * @param string $search the search string that should delimit the end * @return static a new instance of this class */ function beforeLast($search); function beforeLastBytes($search); function beforeLastCodePoints($search); //////////////////////////////////////////////////////////////////////////////// /** * Returns the part of this string between the two specified substrings * * If there are multiple occurrences, the part with the maximum length will be returned * * @param string $start the substring whose first occurrence should delimit the start * @param string $end the substring whose last occurrence should delimit the end * @return static a new instance of this class */ function between($start, $end); function betweenBytes($start, $end); function betweenCodePoints($start, $end); //////////////////////////////////////////////////////////////////////////////// /** * Returns the part of this string *after* the *first* occurrence of the search string * * @param string $search the search string that should delimit the start * @return static a new instance of this class */ function afterFirst($search); function afterFirstBytes($search); function afterFirstCodePoints($search); //////////////////////////////////////////////////////////////////////////////// /** * Returns the part of this string *after* the *last* occurrence of the search string * * @param string $search the search string that should delimit the start * @return static a new instance of this class */ function afterLast($search); function afterLastBytes($search); function afterLastCodePoints($search); //////////////////////////////////////////////////////////////////////////////// /** * Matches this string against the specified regular expression (PCRE) * * @param string $regex the regular expression (PCRE) to match against * @param mixed|null $matches the array that should be filled with the matches (optional) * @param bool|null $returnAll whether to return all matches and not only the first one (optional) * @return bool whether this string matches the regular expression */ function matches($regex, &$matches = null, $returnAll = null); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string matches the other string * * @param string $other the other string to compare with * @return bool whether the two strings are equal */ function equals($other); //////////////////////////////////////////////////////////////////////////////// /** * Returns whether this string matches the other string * * This operation is case-sensitive * * @param string $other the other string to compare with * @return bool whether the two strings are equal */ function equalsIgnoreCase($other); //////////////////////////////////////////////////////////////////////////////// /** * Compares this string to another string lexicographically * * @param string $other the other string to compare to * @param bool|null $human whether to use human sorting for numbers (e.g. `2` before `10`) (optional) * @return int an indication whether this string is less than (< 0), equal (= 0) or greater (> 0) */ function compareTo($other, $human = null); function compareToBytes($other, $human = null); function compareToCodePoints($other, $human = null); //////////////////////////////////////////////////////////////////////////////// /** * Compares this string to another string lexicographically * * This operation is case-sensitive * * @param string $other the other string to compare to * @param bool|null $human whether to use human sorting for numbers (e.g. `2` before `10`) (optional) * @return int an indication whether this string is less than (< 0), equal (= 0) or greater (> 0) */ function compareToIgnoreCase($other, $human = null); function compareToBytesIgnoreCase($other, $human = null); function compareToCodePointsIgnoreCase($other, $human = null); //////////////////////////////////////////////////////////////////////////////// /** * Escapes this string for safe use in HTML * * @return static this instance for chaining */ function escapeForHtml(); //////////////////////////////////////////////////////////////////////////////// /** * Normalizes all line endings in this string by using a single unified newline sequence (which may be specified manually) * * @param string|null $newlineSequence the target newline sequence to use (optional) * @return static this instance for chaining */ function normalizeLineEndings($newlineSequence = null); //////////////////////////////////////////////////////////////////////////////// /** * Reverses this string * * @return static a new instance of this class */ function reverse(); //////////////////////////////////////////////////////////////////////////////// /** * Turns this string into an acronym (abbreviation) * * @param bool|null $excludeLowerCase whether to exclude lowercase letters from the result (optional) * @return static a new instance of this class */ function acronym($excludeLowerCase = null);
检查字符串长度
$length = count($strInstance); // or $length = $strInstance->length(); // or $length = $strInstance->count();
从数组的所有条目创建实例
$instances = \Delight\Str\Str::fromArray($arrayOfStrings);
贡献
所有贡献都受到欢迎!如果您想贡献,请首先创建一个问题,以便讨论您的功能、问题或疑问。
许可
本项目遵循MIT许可证条款。