getString(), $this->encoding), $this->encoding); } /** * Transforms the string to first character lowercased * * @return Text */ public function toLowerCaseFirst(): Text { $first = $this->substring(0, 1); $rest = $this->substring(1); return new Text(mb_strtolower((string) $first, $this->encoding) . $rest, $this->encoding); } /** * Transforms the string to uppercase * * @return Text */ public function toUpperCase(): Text { return new Text(mb_strtoupper($this->getString(), $this->encoding), $this->encoding); } /** * Transforms the string to first character uppercased * * @return Text */ public function toUpperCaseFirst(): Text { $first = $this->substring(0, 1); $rest = $this->substring(1); return new Text(mb_strtoupper((string) $first, $this->encoding) . $rest, $this->encoding); } /** * Transforms the string to only its first character capitalized. * * @return Text */ public function toCapitalCase(): Text { return $this->toLowerCase()->toUpperCaseFirst(); } /** * Transforms the string with the words capitalized. * * @return Text */ public function toCapitalCaseWords(): Text { $encoding = $this->encoding; return $this->split(' ')->map(function (string $str) use ($encoding) { return Text::create($str, $encoding)->toCapitalCase(); })->join(' '); } /** * Converts this string into camelCase. Numbers are considered as part of its previous piece. * * * $var = new Text('my_own_variable');
* $var->toCamelCase(); // myOwnVariable * * $var = new Text('my_test3_variable');
* $var->toCamelCase(); // myTest3Variable *
* * @return Text */ public function toCamelCase(): Text { return $this->toStudlyCase()->toLowerCaseFirst(); } /** * Converts this string into snake_case. Numbers are considered as part of its previous piece. * * * $var = new Text('myOwnVariable');
* $var->toSnakeCase(); // my_own_variable * * $var = new Text('myTest3Variable');
* $var->toSnakeCase(); // my_test3_variable *
* * @return Text */ public function toSnakeCase(): Text { return $this->toKebabCase()->replace('-', '_'); } /** * Converts this string into StudlyCase. Numbers are considered as part of its previous piece. * * * $var = new Text('my_own_variable');
* $var->toStudlyCase(); // MyOwnVariable * * $var = new Text('my_test3_variable');
* $var->toStudlyCase(); // MyTest3Variable *
* * @return Text * * @psalm-suppress MixedArgument $matches[0] is a string */ public function toStudlyCase(): Text { $input = $this->trim('-_'); if ($input->isEmpty()) { return $input; } $normString = preg_replace('/\s+/', ' ', $input->toString()); $encoding = $this->encoding; return Text::create(preg_replace_callback( '/([A-Z-_\s][a-z0-9]+)/', fn (array $matches): string => ucfirst(str_replace(['-', '_', ' '], '', $matches[0])), $normString ), $encoding) ->toUpperCaseFirst(); } /** * Convert this string into kebab-case. Numbers are considered as part of its previous piece. * * * $var = new Text('myOwnVariable');
* $var->toKebabCase(); // my-own-variable * * $var = new Text('myTest3Variable');
* $var->toKebabCase(); // my-test3-variable *
* * @return Text */ public function toKebabCase(): Text { $input = $this->trim('-_'); $normString = str_replace([' ', '_'], '-', preg_replace('/\s+/', ' ', $input->toString())); return new Text(mb_strtolower(preg_replace('/([a-z0-9])([A-Z])/', '$1-$2', $normString)), $this->encoding); } /** * Get the plural form of the Text object. * * @param InflectorInterface|null $pluralizer * * @return Text */ public function toPlural(?InflectorInterface $pluralizer = null): Text { $pluralizer = $pluralizer ?: new Inflector(); return new Text($pluralizer->getPluralForm($this->getString()), $this->encoding); } /** * Get the singular form of the Text object. * * @param InflectorInterface|null $pluralizer * * @return Text */ public function toSingular(?InflectorInterface $pluralizer = null): Text { $pluralizer = $pluralizer ?: new Inflector(); return new Text($pluralizer->getSingularForm($this->getString()), $this->encoding); } /** * Converts each tab in the string to some number of spaces, as defined by * $tabLength. By default, each tab is converted to 4 consecutive spaces. * * @param int $tabLength Number of spaces to replace each tab with * * @return Text text with tabs converted to spaces */ public function toSpaces(int $tabLength = 4): Text { $spaces = str_repeat(' ', $tabLength); return $this->replace("\t", $spaces); } /** * Converts each occurrence of some consecutive number of spaces, as * defined by $tabLength, to a tab. By default, each 4 consecutive spaces * are converted to a tab. * * @param int $tabLength Number of spaces to replace with a tab * * @return Text text with spaces converted to tabs */ public function toTabs(int $tabLength = 4): Text { $spaces = str_repeat(' ', $tabLength); return $this->replace($spaces, "\t"); } }