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 相关文章推荐
srcElement表格样式
Sep 03 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
Oct 11 Javascript
js下拉菜单语言选项简单实现
Sep 23 Javascript
javascript 3d 逐侦产品展示(核心精简)
Mar 26 Javascript
基于jQuery实现点击弹出层实例代码
Jan 01 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
深入浅析search 搜索框的写法
Aug 02 Javascript
Vue+Element使用富文本编辑器的示例代码
Aug 14 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
node简单实现一个更改头像功能的示例
Dec 29 Javascript
vue实现验证码按钮倒计时功能
Apr 10 Javascript
vue实现两个组件之间数据共享和修改操作
Nov 12 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
Python模拟登录12306的方法
2014/12/30 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
python连接数据库的方法
2017/10/19 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
博士毕业生自我鉴定范文
2014/04/13 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2014年派出所工作总结
2014/11/21 职场文书
2014年教研室工作总结
2014/12/06 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
美丽人生观后感
2015/06/03 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers