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 相关文章推荐
javascript对象的property和prototype是这样一种关系
Mar 24 Javascript
jquery创建并行对象或者合并对象的实现代码
Oct 10 Javascript
JavaScript异步加载浅析
Dec 28 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
使用canvas实现仿新浪微博头像截取上传功能
Sep 02 Javascript
JS实现alert中显示换行的方法
Dec 17 Javascript
JS函数多个参数默认值指定方法分析
Nov 28 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
Nov 02 Javascript
Vue分页插件的前后端配置与使用
Oct 09 Javascript
vue cli4.0项目引入typescript的方法
Jul 17 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
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实现异步调用方法研究与分享
2011/10/27 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
jquery表单验证使用插件formValidator
2012/11/10 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
Python实现的一个简单LRU cache
2014/09/26 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
京东国际站:JOYBUY
2017/11/23 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
大一新生学期自我评价
2014/04/09 职场文书
统计专业自荐书
2014/07/06 职场文书
手机销售员岗位职责
2015/04/11 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
孟佩杰观后感
2015/06/17 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
Python Pygame实战之塔防游戏的实现
2022/03/17 Python