JS常见方法封装之字符串

前言

面试经常会碰到让你徒手撸一个数组去重、字符串首字母大写等类似的问题。在实际的项目中,也有很多地方会用到。这个时候就要考虑将一些常用的方法进行封装,便有使用。省去为了一个方法而加载一个库的麻烦。

String类型元素API

在此之前你还需要掌握一些JS原生的字符串API。

charAt() 返回指定位置的字符。 **注释:**如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串

concat() 连接字符串。 **注释:**通常使用"+"运算符来实现更好

indexOf() 指定字符串在该字符串首现的位置。 **注释:**未找到返回"-1"

match()indexOf()类似,但返回的不是位置而是字符串。 **注释:**参数为字符串或正则

replace() 用字符串替换字符串,或字符串替换正则。

search() 检索字符串或正则,返回位置。

slice() 返回一个从start开始(含)到end结束的字符串

split() 分割为字符串数组

sub() sup() 字符串转换为下标、上标

toLowerCase() toUpperCase() 字符串转为小写、大写

常见字符串方法封装

1. 去除字符串空格

//去除空格  type 1-所有空格  2-前后空格  3-前空格 4-后空格
function trim(str,type){
  switch (type){
    case 1:return str.replace(/\s+/g,"");
    case 2:return str.replace(/(^\s*)|(\s*$)/g, "");
    case 3:return str.replace(/(^\s*)/g, "");
    case 4:return str.replace(/(\s*$)/g, "");
    default:return str;
  }
}

trim('a   a   dd ',1); // "aadd"
trim('a   a   dd ',2); // "a   a   dd"
trim('a   a   dd ',3); // "a   a   dd "
trim(' a   a   dd ',4); // " a   a   dd"

2. 字母大小写切换

var str = 'Hi, my name\'s Han Meimei, a SOFTWARE engineer';  

function toUpperCase(ss) {
  var ss = ss.toLowerCase().split(/\s+/)
  for(let i in ss) {
    ss[i] = ss[i].slice(0,1).toUpperCase() + ss[i].slice(1)
  }
  return ss.join(' ')
} 
console.log(toUpperCase(str));

3. 字符串检测

function checkType (str, type) {
  switch (type) {
    case 'email':
      return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
    case 'phone':
      return /^1[3|4|5|7|8][0-9]{9}$/.test(str);
    case 'tel':
      return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
    case 'number':
      return /^[0-9]$/.test(str);
    case 'english':
      return /^[a-zA-Z]+$/.test(str);
    case 'chinese':
      return /^[\u4E00-\u9FA5]+$/.test(str);
    case 'lower':
      return /^[a-z]+$/.test(str);
    case 'upper':
      return /^[A-Z]+$/.test(str);
    default :
      return true;
  }
}

checkType('165226226326','phone') // false
checkType('123@qq.com','email') // true

4. 时间戳转日期格式

function timestampToTime(timestamp) {
  var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
  Y = date.getFullYear() + '-';
  M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
  D = date.getDate() + ' ';
  h = date.getHours() + ':';
  m = date.getMinutes() + ':';
  s = date.getSeconds();
  return Y+M+D+h+m+s;
}timestampToTime(1403058804); //2014-06-18 10:33:24

参考

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值