字符串对象扩展库

扩展原生String对象功能:格式化字符串、startsWith、endsWith函数

目前為 2015-12-04 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/11230/91690/%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AF%B9%E8%B1%A1%E6%89%A9%E5%B1%95%E5%BA%93.js

  1. -function() {
  2. function Overload(fn_objs) {
  3. var is_match = function (x, y) {
  4. if (x == y) return !0;
  5. if (x.indexOf("*") == -1) return !1;
  6.  
  7. var x_arr = x.split(","),
  8. y_arr = y.split(",");
  9. if (x_arr.length != y_arr.length) return !1;
  10. while (x_arr.length) {
  11. var x_first = x_arr.shift(),
  12. y_first = y_arr.shift();
  13. if (x_first != "*" && x_first != y_first) return !1;
  14. }
  15. return !0;
  16. };
  17. var ret = function () {
  18. var args = arguments,
  19. args_len = args.length,
  20. args_types = [],
  21. args_type,
  22. fn_objs = args.callee._fn_objs,
  23. match_fn = function () {};
  24.  
  25. for (var i = 0; i < args_len; i++) {
  26. var type = typeof args[i];
  27. type == "object" && (args[i].length > -1) && (type = "array");
  28. args_types.push(type);
  29. }
  30. args_type = args_types.join(",");
  31. for (var k in fn_objs) {
  32. if (is_match(k, args_type)) {
  33. match_fn = fn_objs[k];
  34. break;
  35. }
  36. }
  37. return match_fn.apply(this, args);
  38. };
  39. ret._fn_objs = fn_objs;
  40. return ret;
  41. }
  42. String.prototype.format = Overload({
  43. "array" : function (params) {
  44. var reg = /{(\d+)}/gm;
  45. return this.replace(reg, function (match, key) {
  46. return params[~~key];
  47. });
  48. },
  49. "object" : function (param) {
  50. var reg = /{([^{}]+)}/gm;
  51. return this.replace(reg, function (match, key) {
  52. return param[key];
  53. });
  54. }
  55. });
  56. if (typeof String.prototype.startsWith !== 'function') {
  57. String.prototype.startsWith = function (str){
  58. return this.slice(0, str.length) === str;
  59. };
  60. String.prototype.endsWith = function (str){
  61. return this.slice(-str.length) === str;
  62. };
  63. }
  64. /*
  65. Object.prototype.extend = function(obj){
  66. for (var i in obj) {
  67. //obj.hasOwnProperty(i) &&
  68. (this[i] = obj[i]);
  69. }
  70. };*/
  71. }();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址