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