javaScript字符串工具类StringUtils详解


Posted in Javascript onDecember 08, 2017

本文实例为大家分享了javaScript字符串工具类的具体代码,供大家参考,具体内容如下

StringUtils = { 
  isEmpty: function(input) { 
   return input == null || input == ''; 
  }, 
  isNotEmpty: function(input) { 
   return !this.isEmpty(input); 
  }, 
  isBlank: function(input) { 
   return input == null || /^\s*$/.test(input); 
  }, 
  isNotBlank: function(input) { 
   return !this.isBlank(input); 
  }, 
  trim: function(input) { 
   return input.replace(/^\s+|\s+$/, ''); 
  }, 
  trimToEmpty: function(input) { 
   return input == null ? "" : this.trim(input); 
  }, 
  startsWith: function(input, prefix) { 
   return input.indexOf(prefix) === 0; 
  }, 
  endsWith: function(input, suffix) { 
   return input.lastIndexOf(suffix) === 0; 
  }, 
  contains: function(input, searchSeq) { 
   return input.indexOf(searchSeq) >= 0; 
  }, 
  equals: function(input1, input2) { 
   return input1 == input2; 
  }, 
  equalsIgnoreCase: function(input1, input2) { 
   return input1.toLocaleLowerCase() == input2.toLocaleLowerCase(); 
  }, 
  containsWhitespace: function(input) { 
   return this.contains(input, ' '); 
  }, 
  //生成指定个数的字符 
  repeat: function(ch, repeatTimes) { 
   var result = ""; 
   for(var i = 0; i < repeatTimes; i++) { 
    result += ch; 
   } 
   return result; 
  }, 
  deleteWhitespace: function(input) { 
   return input.replace(/\s+/g, ''); 
  }, 
  rightPad: function(input, size, padStr) { 
   return input + this.repeat(padStr, size); 
  }, 
  leftPad: function(input, size, padStr) { 
   return this.repeat(padStr, size) + input; 
  }, 
  //首小写字母转大写 
  capitalize: function(input) { 
   var strLen = 0; 
   if(input == null || (strLen = input.length) == 0) { 
    return input; 
   } 
   return input.replace(/^[a-z]/, function(matchStr) { 
    return matchStr.toLocaleUpperCase(); 
   }); 
  }, 
  //首大写字母转小写 
  uncapitalize: function(input) { 
   var strLen = 0; 
   if(input == null || (strLen = input.length) == 0) { 
    return input; 
   } 
   return input.replace(/^[A-Z]/, function(matchStr) { 
    return matchStr.toLocaleLowerCase(); 
   }); 
  }, 
  //大写转小写,小写转大写 
  swapCase: function(input) { 
   return input.replace(/[a-z]/ig, function(matchStr) { 
    if(matchStr >= 'A' && matchStr <= 'Z') { 
     return matchStr.toLocaleLowerCase(); 
    } else if(matchStr >= 'a' && matchStr <= 'z') { 
     return matchStr.toLocaleUpperCase(); 
    } 
   }); 
  }, 
  //统计含有的子字符串的个数 
  countMatches: function(input, sub) { 
   if(this.isEmpty(input) || this.isEmpty(sub)) { 
    return 0; 
   } 
   var count = 0; 
   var index = 0; 
   while((index = input.indexOf(sub, index)) != -1) { 
    index += sub.length; 
    count++; 
   } 
   return count; 
  }, 
  //只包含字母 
  isAlpha: function(input) { 
   return /^[a-z]+$/i.test(input); 
  }, 
  //只包含字母、空格 
  isAlphaSpace: function(input) { 
   return /^[a-z\s]*$/i.test(input); 
  }, 
  //只包含字母、数字 
  isAlphanumeric: function(input) { 
   return /^[a-z0-9]+$/i.test(input); 
  }, 
  //只包含字母、数字和空格 
  isAlphanumericSpace: function(input) { 
   return /^[a-z0-9\s]*$/i.test(input); 
  }, 
  //数字 
  isNumeric: function(input) { 
   return /^(?:[1-9]\d*|0)(?:\.\d+)?$/.test(input); 
  }, 
  //小数 
  isDecimal: function(input) { 
   return /^[-+]?(?:0|[1-9]\d*)\.\d+$/.test(input); 
  }, 
  //负小数 
  isNegativeDecimal: function(input) { 
   return /^\-?(?:0|[1-9]\d*)\.\d+$/.test(input); 
  }, 
  //正小数 
  isPositiveDecimal: function(input) { 
   return /^\+?(?:0|[1-9]\d*)\.\d+$/.test(input); 
  }, 
  //整数 
  isInteger: function(input) { 
   return /^[-+]?(?:0|[1-9]\d*)$/.test(input); 
  }, 
  //正整数 
  isPositiveInteger: function(input) { 
   return /^\+?(?:0|[1-9]\d*)$/.test(input); 
  }, 
  //负整数 
  isNegativeInteger: function(input) { 
   return /^\-?(?:0|[1-9]\d*)$/.test(input); 
  }, 
  //只包含数字和空格 
  isNumericSpace: function(input) { 
   return /^[\d\s]*$/.test(input); 
  }, 
  isWhitespace: function(input) { 
   return /^\s*$/.test(input); 
  }, 
  isAllLowerCase: function(input) { 
   return /^[a-z]+$/.test(input); 
  }, 
  isAllUpperCase: function(input) { 
   return /^[A-Z]+$/.test(input); 
  }, 
  defaultString: function(input, defaultStr) { 
   return input == null ? defaultStr : input; 
  }, 
  defaultIfBlank: function(input, defaultStr) { 
   return this.isBlank(input) ? defaultStr : input; 
  }, 
  defaultIfEmpty: function(input, defaultStr) { 
   return this.isEmpty(input) ? defaultStr : input; 
  }, 
  //字符串反转 
  reverse: function(input) { 
   if(this.isBlank(input)) { 
    input; 
   } 
   return input.split("").reverse().join(""); 
  }, 
  //删掉特殊字符(英文状态下) 
  removeSpecialCharacter: function(input) { 
   return input.replace(/[!-/:-@\[-`{-~]/g, ""); 
  }, 
  //只包含特殊字符、数字和字母(不包括空格,若想包括空格,改为[ -~]) 
  isSpecialCharacterAlphanumeric: function(input) { 
   return /^[!-~]+$/.test(input); 
  }, 
  /** 
   * 校验时排除某些字符串,即不能包含某些字符串 
   * @param {Object} conditions:里面有多个属性,如下: 
   * 
   * @param {String} matcherFlag 匹配标识 
   * 0:数字;1:字母;2:小写字母;3:大写字母;4:特殊字符,指英文状态下的标点符号及括号等;5:中文; 
   * 6:数字和字母;7:数字和小写字母;8:数字和大写字母;9:数字、字母和特殊字符;10:数字和中文; 
   * 11:小写字母和特殊字符;12:大写字母和特殊字符;13:字母和特殊字符;14:小写字母和中文;15:大写字母和中文; 
   * 16:字母和中文;17:特殊字符、和中文;18:特殊字符、字母和中文;19:特殊字符、小写字母和中文;20:特殊字符、大写字母和中文; 
   * 100:所有字符; 
   * @param {Array} excludeStrArr 排除的字符串,数组格式 
   * @param {String} length 长度,可为空。1,2表示长度1到2之间;10,表示10个以上字符;5表示长度为5 
   * @param {Boolean} ignoreCase 是否忽略大小写 
   * conditions={matcherFlag:"0",excludeStrArr:[],length:"",ignoreCase:true} 
   */ 
  isPatternMustExcludeSomeStr: function(input, conditions) { 
   //参数 
   var matcherFlag = conditions.matcherFlag; 
   var excludeStrArr = conditions.excludeStrArr; 
   var length = conditions.length; 
   var ignoreCase = conditions.ignoreCase; 
   //拼正则 
   var size = excludeStrArr.length; 
   var regex = (size == 0) ? "^" : "^(?!.*(?:{0}))"; 
   var subPattern = ""; 
   for(var i = 0; i < size; i++) { 
    excludeStrArr[i] = Bee.StringUtils.escapeMetacharacterOfStr(excludeStrArr[i]); 
    subPattern += excludeStrArr[i]; 
    if(i != size - 1) { 
     subPattern += "|"; 
    } 
   } 
   regex = this.format(regex, [subPattern]); 
   switch(matcherFlag) { 
    case '0': 
     regex += "\\d"; 
     break; 
    case '1': 
     regex += "[a-zA-Z]"; 
     break; 
    case '2': 
     regex += "[a-z]"; 
     break; 
    case '3': 
     regex += "[A-Z]"; 
     break; 
    case '4': 
     regex += "[!-/:-@\[-`{-~]"; 
     break; 
    case '5': 
     regex += "[\u4E00-\u9FA5]"; 
     break; 
    case '6': 
     regex += "[a-zA-Z0-9]"; 
     break; 
    case '7': 
     regex += "[a-z0-9]"; 
     break; 
    case '8': 
     regex += "[A-Z0-9]"; 
     break; 
    case '9': 
     regex += "[!-~]"; 
     break; 
    case '10': 
     regex += "[0-9\u4E00-\u9FA5]"; 
     break; 
    case '11': 
     regex += "[a-z!-/:-@\[-`{-~]"; 
     break; 
    case '12': 
     regex += "[A-Z!-/:-@\[-`{-~]"; 
     break; 
    case '13': 
     regex += "[a-zA-Z!-/:-@\[-`{-~]"; 
     break; 
    case '14': 
     regex += "[a-z\u4E00-\u9FA5]"; 
     break; 
    case '15': 
     regex += "[A-Z\u4E00-\u9FA5]"; 
     break; 
    case '16': 
     regex += "[a-zA-Z\u4E00-\u9FA5]"; 
     break; 
    case '17': 
     regex += "[\u4E00-\u9FA5!-/:-@\[-`{-~]"; 
     break; 
    case '18': 
     regex += "[\u4E00-\u9FA5!-~]"; 
     break; 
    case '19': 
     regex += "[a-z\u4E00-\u9FA5!-/:-@\[-`{-~]"; 
     break; 
    case '20': 
     regex += "[A-Z\u4E00-\u9FA5!-/:-@\[-`{-~]"; 
     break; 
    case '100': 
     regex += "[\s\S]"; 
     break; 
    default: 
     alert(matcherFlag + ":This type is not supported!"); 
   } 
   regex += this.isNotBlank(length) ? "{" + length + "}" : "+"; 
   regex += "$"; 
   var pattern = new RegExp(regex, ignoreCase ? "i" : ""); 
   return pattern.test(input); 
  }, 
  /** 
   * @param {String} message 
   * @param {Array} arr 
   * 消息格式化 
   */ 
  format: function(message, arr) { 
   return message.replace(/{(\d+)}/g, function(matchStr, group1) { 
    return arr[group1]; 
   }); 
  }, 
  /** 
   * 把连续出现多次的字母字符串进行压缩。如输入:aaabbbbcccccd 输出:3a4b5cd 
   * @param {String} input 
   * @param {Boolean} ignoreCase : true or false 
   */ 
  compressRepeatedStr: function(input, ignoreCase) { 
   var pattern = new RegExp("([a-z])\\1+", ignoreCase ? "ig" : "g"); 
   return result = input.replace(pattern, function(matchStr, group1) { 
    return matchStr.length + group1; 
   }); 
  }, 
  /** 
   * 校验必须同时包含某些字符串 
   * @param {String} input 
   * @param {Object} conditions:里面有多个属性,如下: 
   * 
   * @param {String} matcherFlag 匹配标识 
   * 0:数字;1:字母;2:小写字母;3:大写字母;4:特殊字符,指英文状态下的标点符号及括号等;5:中文; 
   * 6:数字和字母;7:数字和小写字母;8:数字和大写字母;9:数字、字母和特殊字符;10:数字和中文; 
   * 11:小写字母和特殊字符;12:大写字母和特殊字符;13:字母和特殊字符;14:小写字母和中文;15:大写字母和中文; 
   * 16:字母和中文;17:特殊字符、和中文;18:特殊字符、字母和中文;19:特殊字符、小写字母和中文;20:特殊字符、大写字母和中文; 
   * 100:所有字符; 
   * @param {Array} excludeStrArr 排除的字符串,数组格式 
   * @param {String} length 长度,可为空。1,2表示长度1到2之间;10,表示10个以上字符;5表示长度为5 
   * @param {Boolean} ignoreCase 是否忽略大小写 
   * conditions={matcherFlag:"0",containStrArr:[],length:"",ignoreCase:true} 
   * 
   */ 
  isPatternMustContainSomeStr: function(input, conditions) { 
   //参数 
   var matcherFlag = conditions.matcherFlag; 
   var containStrArr = conditions.containStrArr; 
   var length = conditions.length; 
   var ignoreCase = conditions.ignoreCase; 
   //创建正则 
   var size = containStrArr.length; 
   var regex = "^"; 
   var subPattern = ""; 
   for(var i = 0; i < size; i++) { 
    containStrArr[i] = Bee.StringUtils.escapeMetacharacterOfStr(containStrArr[i]); 
    subPattern += "(?=.*" + containStrArr[i] + ")"; 
   } 
   regex += subPattern; 
   switch(matcherFlag) { 
    case '0': 
     regex += "\\d"; 
     break; 
    case '1': 
     regex += "[a-zA-Z]"; 
     break; 
    case '2': 
     regex += "[a-z]"; 
     break; 
    case '3': 
     regex += "[A-Z]"; 
     break; 
    case '4': 
     regex += "[!-/:-@\[-`{-~]"; 
     break; 
    case '5': 
     regex += "[\u4E00-\u9FA5]"; 
     break; 
    case '6': 
     regex += "[a-zA-Z0-9]"; 
     break; 
    case '7': 
     regex += "[a-z0-9]"; 
     break; 
    case '8': 
     regex += "[A-Z0-9]"; 
     break; 
    case '9': 
     regex += "[!-~]"; 
     break; 
    case '10': 
     regex += "[0-9\u4E00-\u9FA5]"; 
     break; 
    case '11': 
     regex += "[a-z!-/:-@\[-`{-~]"; 
     break; 
    case '12': 
     regex += "[A-Z!-/:-@\[-`{-~]"; 
     break; 
    case '13': 
     regex += "[a-zA-Z!-/:-@\[-`{-~]"; 
     break; 
    case '14': 
     regex += "[a-z\u4E00-\u9FA5]"; 
     break; 
    case '15': 
     regex += "[A-Z\u4E00-\u9FA5]"; 
     break; 
    case '16': 
     regex += "[a-zA-Z\u4E00-\u9FA5]"; 
     break; 
    case '17': 
     regex += "[\u4E00-\u9FA5!-/:-@\[-`{-~]"; 
     break; 
    case '18': 
     regex += "[\u4E00-\u9FA5!-~]"; 
     break; 
    case '19': 
     regex += "[a-z\u4E00-\u9FA5!-/:-@\[-`{-~]"; 
     break; 
    case '20': 
     regex += "[A-Z\u4E00-\u9FA5!-/:-@\[-`{-~]"; 
     break; 
    case '100': 
     regex += "[\s\S]"; 
     break; 
    default: 
     alert(matcherFlag + ":This type is not supported!"); 
   } 
   regex += this.isNotBlank(length) ? "{" + length + "}" : "+"; 
   regex += "$"; 
   var pattern = new RegExp(regex, ignoreCase ? "i" : ""); 
   return pattern.test(input); 
  }, 
  //中文校验 
  isChinese: function(input) { 
   return /^[\u4E00-\u9FA5]+$/.test(input); 
  }, 
  //去掉中文字符 
  removeChinese: function(input) { 
   return input.replace(/[\u4E00-\u9FA5]+/gm, ""); 
  }, 
  //转义元字符 
  escapeMetacharacter: function(input) { 
   var metacharacter = "^$()*+.[]|\\-?{}|"; 
   if(metacharacter.indexOf(input) >= 0) { 
    input = "\\" + input; 
   } 
   return input; 
  }, 
  //转义字符串中的元字符 
  escapeMetacharacterOfStr: function(input) { 
   return input.replace(/[\^\$\*\+\.
\|\\\-\?\{\}\|]/gm, "\\$&"); 
  } 
 
 };

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js滚动条多种样式,推荐
Feb 05 Javascript
jquery简单实现图片切换效果的方法
May 12 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
Sep 06 Javascript
JavaScript对象数组排序函数及六个用法
Dec 23 Javascript
谈一谈JS消息机制和事件机制的理解
Apr 14 Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 Javascript
浅谈angularjs module返回对象的坑(推荐)
Oct 21 Javascript
JS中如何实现复选框全选功能
Dec 19 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
layui问题之模拟select点击事件的实例讲解
Aug 15 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 Javascript
javaScript日期工具类DateUtils详解
Dec 08 #Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 #Javascript
在Swiper内如何制作CSS3动画效果示例代码
Dec 07 #Javascript
微信小程序wx.previewImage预览图片实例详解
Dec 07 #Javascript
关于JavaScript语句后面的分号问题
Dec 07 #Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 #Javascript
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 #Javascript
You might like
随机头像PHP版
2006/10/09 PHP
我的论坛源代码(八)
2006/10/09 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
php操作mongoDB实例分析
2014/12/29 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
PHP 8新特性简介
2020/08/18 PHP
JavaScript脚本性能的优化方法
2007/02/02 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
python生成日历实例解析
2014/08/21 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python栈类实例分析
2015/06/15 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python 学习教程之networkx
2019/04/15 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
初级会计求职信范文
2014/02/15 职场文书
期中考试反思800字
2014/05/01 职场文书
法制宣传标语
2014/06/23 职场文书
简单租房协议书
2014/10/21 职场文书
职工年度考核评语
2014/12/31 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python