string-polyfill.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. String.prototype.substr = function (start, length) {
  2. if (start === undefined) {
  3. return this.toString()
  4. }
  5. if (typeof start !== 'number' || (typeof length !== 'number' && length !== undefined) ) {
  6. return ''
  7. }
  8. const strArr = [...this]
  9. const _length = strArr.length
  10. if (_length + start < 0) {
  11. start = 0
  12. }
  13. if (length === undefined || (start < 0 && start + length > 0)) {
  14. return strArr.slice(start).join('')
  15. } else {
  16. return strArr.slice(start, start + length).join('')
  17. }
  18. }
  19. String.prototype.substring = function (start, end) {
  20. if (start === undefined) {
  21. return this.toString()
  22. }
  23. if (typeof start !== 'number' || (typeof end !== 'number' && end !== undefined) ) {
  24. return ''
  25. }
  26. if (!(start > 0)) {
  27. start = 0
  28. }
  29. if (!(end > 0) && end !== undefined) {
  30. end = 0
  31. }
  32. const strArr = [...this]
  33. const _length = strArr.length
  34. if (start > _length) {
  35. start = _length
  36. }
  37. if (end > _length) {
  38. end = _length
  39. }
  40. if (end < start) {
  41. [start, end] = [end, start]
  42. }
  43. return strArr.slice(start, end).join('')
  44. }