注册 登录
发贴工具
查看: 6|回复: 0
打印 上一主题 下一主题

[24小时收录超级好的网站] AIWROK软件String实例演示

[复制链接]

2414

主题

2462

帖子

1万

积分

积分
14688
跳转到指定楼层
楼主
AIWROK软件String实例演示
  1. /*
  2. 🍎交流QQ群711841924群一,苹果内测群,528816639
  3. 🍎🔨JavaScript字符串工具类封装
  4. 🔨适用本文档ES5系统安卓 JavaScript引擎Rhino
  5. */

  6. /**
  7. * 字符串工具类封装
  8. * 提供更加面向对象的字符串操作接口
  9. */
  10. function StringUtils() {}

  11. /**
  12. * 返回指定位置的字符
  13. * @param {string} str - 源字符串
  14. * @param {number} index - 字符位置
  15. * @returns {string} 指定位置的字符
  16. */
  17. StringUtils.prototype.charAt = function(str, index) {
  18.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  19.     if (typeof index !== 'number' || index % 1 !== 0) throw new Error('[错误] 参数index必须是整数');
  20.     return str.charAt(index);
  21. };

  22. /**
  23. * 返回指定位置字符的Unicode编码
  24. * @param {string} str - 源字符串
  25. * @param {number} index - 字符位置
  26. * @returns {number} Unicode编码值
  27. */
  28. StringUtils.prototype.charCodeAt = function(str, index) {
  29.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  30.     if (typeof index !== 'number' || index % 1 !== 0) throw new Error('[错误] 参数index必须是整数');
  31.     return str.charCodeAt(index);
  32. };

  33. /**
  34. * 查找子字符串首次出现的位置
  35. * @param {string} str - 源字符串
  36. * @param {string} searchValue - 要查找的子字符串
  37. * @param {number} [fromIndex=0] - 开始查找的位置
  38. * @returns {number} 首次出现的位置,未找到返回-1
  39. */
  40. StringUtils.prototype.indexOf = function(str, searchValue, fromIndex) {
  41.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  42.     if (typeof searchValue !== 'string') throw new Error('[错误] 参数searchValue必须是字符串');
  43.     return str.indexOf(searchValue, fromIndex);
  44. };

  45. /**
  46. * 查找子字符串最后一次出现的位置
  47. * @param {string} str - 源字符串
  48. * @param {string} searchValue - 要查找的子字符串
  49. * @param {number} [fromIndex=str.length] - 开始查找的位置
  50. * @returns {number} 最后一次出现的位置,未找到返回-1
  51. */
  52. StringUtils.prototype.lastIndexOf = function(str, searchValue, fromIndex) {
  53.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  54.     if (typeof searchValue !== 'string') throw new Error('[错误] 参数searchValue必须是字符串');
  55.     return str.lastIndexOf(searchValue, fromIndex);
  56. };

  57. /**
  58. * 获取字符串长度
  59. * @param {string} str - 源字符串
  60. * @returns {number} 字符串长度
  61. */
  62. StringUtils.prototype.getLength = function(str) {
  63.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  64.     return str.length;
  65. };

  66. /**
  67. * 使用正则表达式匹配字符串
  68. * @param {string} str - 源字符串
  69. * @param {RegExp} regexp - 正则表达式
  70. * @returns {Array|null} 匹配结果数组,未匹配返回null
  71. */
  72. StringUtils.prototype.match = function(str, regexp) {
  73.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  74.     if (!(regexp instanceof RegExp)) throw new Error('[错误] 参数regexp必须是正则表达式对象');
  75.     return str.match(regexp);
  76. };

  77. /**
  78. * 替换第一个匹配的子字符串
  79. * @param {string} str - 源字符串
  80. * @param {string|RegExp} searchValue - 要替换的内容
  81. * @param {string|Function} replaceValue - 替换内容
  82. * @returns {string} 替换后的新字符串
  83. */
  84. StringUtils.prototype.replace = function(str, searchValue, replaceValue) {
  85.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  86.     return str.replace(searchValue, replaceValue);
  87. };

  88. /**
  89. * 替换所有匹配的子字符串
  90. * @param {string} str - 源字符串
  91. * @param {string|RegExp} searchValue - 要替换的内容
  92. * @param {string|Function} replaceValue - 替换内容
  93. * @returns {string} 替换后的新字符串
  94. */
  95. StringUtils.prototype.replaceAll = function(str, searchValue, replaceValue) {
  96.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  97.    
  98.     // 兼容低版本环境:若不支持replaceAll,用正则/g替代
  99.     if (!String.prototype.replaceAll) {
  100.         if (typeof searchValue === 'string') {
  101.             // 字符串转正则(转义特殊字符)
  102.             var escaped = searchValue.replace(/[.*+?^${}()|[\]\\]/g, '\\[        DISCUZ_CODE_0        ]amp;');
  103.             return str.replace(new RegExp(escaped, 'g'), replaceValue);
  104.         } else if (searchValue instanceof RegExp && !searchValue.global) {
  105.             // 正则无/g修饰符,添加后匹配所有
  106.             var flags = 'g';
  107.             if (searchValue.ignoreCase) flags += 'i';
  108.             if (searchValue.multiline) flags += 'm';
  109.             var newRegexp = new RegExp(searchValue.source, flags);
  110.             return str.replace(newRegexp, replaceValue);
  111.         }
  112.     }
  113.     return str.replaceAll(searchValue, replaceValue);
  114. };

  115. /**
  116. * 分割字符串为数组
  117. * @param {string} str - 源字符串
  118. * @param {string|RegExp} separator - 分隔符
  119. * @param {number} [limit] - 限制返回数组大小
  120. * @returns {Array} 分割后的字符串数组
  121. */
  122. StringUtils.prototype.split = function(str, separator, limit) {
  123.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  124.     return str.split(separator, limit);
  125. };

  126. /**
  127. * 判断字符串是否以指定内容开头
  128. * @param {string} str - 源字符串
  129. * @param {string} searchValue - 要检测的内容
  130. * @param {number} [position=0] - 检测开始位置
  131. * @returns {boolean} 是否以指定内容开头
  132. */
  133. StringUtils.prototype.startsWith = function(str, searchValue, position) {
  134.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  135.     if (typeof searchValue !== 'string') throw new Error('[错误] 参数searchValue必须是字符串');
  136.    
  137.     // 兼容低版本环境:手动实现startsWith
  138.     if (!String.prototype.startsWith) {
  139.         var pos = position || 0;
  140.         return str.substr(pos, searchValue.length) === searchValue;
  141.     }
  142.     return str.startsWith(searchValue, position);
  143. };

  144. /**
  145. * 从指定位置截取指定长度的子字符串
  146. * @param {string} str - 源字符串
  147. * @param {number} start - 开始位置
  148. * @param {number} [length] - 截取长度
  149. * @returns {string} 截取的子字符串
  150. */
  151. StringUtils.prototype.substr = function(str, start, length) {
  152.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  153.     if (typeof start !== 'number' || start % 1 !== 0) throw new Error('[错误] 参数start必须是整数');
  154.     return str.substr(start, length);
  155. };

  156. /**
  157. * 截取指定范围的子字符串
  158. * @param {string} str - 源字符串
  159. * @param {number} start - 开始位置
  160. * @param {number} [end] - 结束位置(不包含)
  161. * @returns {string} 截取的子字符串
  162. */
  163. StringUtils.prototype.substring = function(str, start, end) {
  164.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  165.     if (typeof start !== 'number' || start % 1 !== 0) throw new Error('[错误] 参数start必须是整数');
  166.     return str.substring(start, end);
  167. };

  168. /**
  169. * 去除字符串首尾空白字符
  170. * @param {string} str - 源字符串
  171. * @returns {string} 去除首尾空白字符后的字符串
  172. */
  173. StringUtils.prototype.trim = function(str) {
  174.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  175.    
  176.     // 兼容低版本环境:手动实现trim
  177.     if (!String.prototype.trim) {
  178.         return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  179.     }
  180.     return str.trim();
  181. };

  182. /**
  183. * 转换字符串为大写
  184. * @param {string} str - 源字符串
  185. * @returns {string} 转换后的大写字符串
  186. */
  187. StringUtils.prototype.toUpperCase = function(str) {
  188.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  189.     return str.toUpperCase();
  190. };

  191. /**
  192. * 转换字符串为小写
  193. * @param {string} str - 源字符串
  194. * @returns {string} 转换后的小写字符串
  195. */
  196. StringUtils.prototype.toLowerCase = function(str) {
  197.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  198.     return str.toLowerCase();
  199. };

  200. /**
  201. * 连接字符串
  202. * @param {string} str - 源字符串
  203. * @param {...string} strings - 要连接的字符串
  204. * @returns {string} 连接后的字符串
  205. */
  206. StringUtils.prototype.concat = function(str) {
  207.     if (typeof str !== 'string') throw new Error('[错误] 参数str必须是字符串');
  208.     var args = Array.prototype.slice.call(arguments, 1);
  209.     return str.concat.apply(str, args);
  210. };

  211. // 创建全局实例,方便直接调用
  212. var StrUtil = new StringUtils();

  213. // ===============================
  214. // 使用示例
  215. // ===============================
  216. function printl() {
  217.     // 适配打印函数:定义printl用于输出
  218.     var args = Array.prototype.slice.call(arguments);
  219.    
  220.     // 若环境支持console.log直接调用,若不支持可替换为其他输出方式
  221.     if (typeof console !== 'undefined' && console.log) {
  222.         console.log.apply(console, args);
  223.     } else {
  224.         // 降级处理:拼接字符串输出(适配无console环境)
  225.         var output = args.join(' ');
  226.         if (typeof document !== 'undefined') {
  227.             document.write(output + '<br>');
  228.         } else if (typeof process !== 'undefined' && process.stdout) {
  229.             // Node.js或其他环境兜底
  230.             process.stdout.write(output + '\n');
  231.         }
  232.     }
  233. }

  234. printl("=== &#128640; 字符串工具类封装 - 使用示例 ===");
  235. var testStr = "  Hello, JavaScript World!  ";
  236. printl("基础测试字符串:'" + testStr + "'(含两端空格)");
  237. printl("---------------------------------------------\n");

  238. // 示例调用
  239. printl("1. 获取字符串长度:");
  240. printl("   StrUtil.getLength('" + testStr + "') => " + StrUtil.getLength(testStr));

  241. printl("\n2. 获取指定位置字符:");
  242. printl("   StrUtil.charAt('" + testStr + "', 7) => '" + StrUtil.charAt(testStr, 7) + "'");

  243. printl("\n3. 查找子字符串位置:");
  244. printl("   StrUtil.indexOf('" + testStr + "', 'JavaScript') => " + StrUtil.indexOf(testStr, 'JavaScript'));

  245. printl("\n4. 替换字符串:");
  246. printl("   StrUtil.replace('" + testStr + "', 'JavaScript', 'JS') => '" + StrUtil.replace(testStr, 'JavaScript', 'JS') + "'");

  247. printl("\n5. 全部替换:");
  248. printl("   StrUtil.replaceAll('" + testStr + "', 'l', 'L') => '" + StrUtil.replaceAll(testStr, 'l', 'L') + "'");

  249. printl("\n6. 字符串分割:");
  250. var parts = StrUtil.split(testStr, ' ');
  251. printl("   StrUtil.split('" + testStr + "', ' ') => " + JSON.stringify(parts));

  252. printl("\n7. 去除首尾空格:");
  253. printl("   StrUtil.trim('" + testStr + "') => '" + StrUtil.trim(testStr) + "'");

  254. printl("\n8. 转换大小写:");
  255. printl("   StrUtil.toUpperCase('" + StrUtil.trim(testStr) + "') => '" + StrUtil.toUpperCase(StrUtil.trim(testStr)) + "'");
  256. printl("   StrUtil.toLowerCase('" + StrUtil.trim(testStr) + "') => '" + StrUtil.toLowerCase(StrUtil.trim(testStr)) + "'");

  257. printl("\n9. 判断是否以某字符串开头:");
  258. printl("   StrUtil.startsWith('" + testStr + "', '  Hello') => " + StrUtil.startsWith(testStr, '  Hello'));

  259. printl("\n10. 字符串连接:");
  260. printl("   StrUtil.concat('Hello', ' ', 'World', '!') => '" + StrUtil.concat('Hello', ' ', 'World', '!') + "'");

  261. printl("\n=== ✅ 字符串工具类封装示例运行完毕 ===");
复制代码






untoAIWROK软件S内置String类[String]方法小结nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖