StringUtils.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\utils;
  4. /**
  5. * 字符串工具类
  6. */
  7. class StringUtils
  8. {
  9. public function startsWith(string $string, string $subString): bool
  10. {
  11. return substr($string, 0, strlen($subString)) === $subString;
  12. // 或者 strpos($s2, $s1) === 0
  13. }
  14. public function endsWith(string $string, string $subString): bool
  15. {
  16. return substr($string, strpos($string, $subString)) === $subString;
  17. }
  18. /**
  19. * 下划线转驼峰(首字母大写)
  20. * 思路:
  21. * step1.原字符串转小写,原字符串中的分隔符用空格替换,在字符串开头加上分隔符
  22. * step2.将字符串中每个单词的首字母转换为大写,再去空格,去字符串首部附加的分隔符.
  23. * @param string $string
  24. * @param string $separator
  25. * @return string
  26. */
  27. public function camelizeFirstOn(string $string, $separator = '_')
  28. {
  29. $uncamelized_words = str_replace($separator, " ", strtolower($string));
  30. return str_replace(" ", "", ucwords($uncamelized_words));
  31. }
  32. /**
  33. * 下划线转驼峰(首字母小写)
  34. * 思路:
  35. * step1.原字符串转小写,原字符串中的分隔符用空格替换,在字符串开头加上分隔符
  36. * step2.将字符串中每个单词的首字母转换为大写,再去空格,去字符串首部附加的分隔符.
  37. * @param string $string
  38. * @param string $separator
  39. * @return string
  40. */
  41. public function camelize(string $string, $separator = '_')
  42. {
  43. $uncamelized_words = $separator . str_replace($separator, " ", strtolower($string));
  44. return ltrim(str_replace(" ", "", ucwords($uncamelized_words)), $separator);
  45. }
  46. /**
  47. * 驼峰命名转下划线命名
  48. * 思路:
  49. * 小写和大写紧挨一起的地方,加上分隔符,然后全部转小写
  50. */
  51. public function uncamelize($camelCaps, $separator = '_')
  52. {
  53. return strtolower(preg_replace('/([a-z])([A-Z])/', "$1" . $separator . "$2", $camelCaps));
  54. }
  55. /**
  56. * 生成随机字符串
  57. */
  58. public function generateStochastic($length = 16)
  59. {
  60. $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyz';
  61. return substr(str_shuffle($permitted_chars), 0, $length);
  62. }
  63. }