字符串中常用的方法
所有用 单引号、双引号、反引号 包起来的都是字符串
let str = 'zhufengpeixunyangfanqihang'; // 每一个字符串都是由零到多个字符组成的 str.length //=>字符串长度 str[0] //=>获取索引为零(第一个)字符 str[str.length-1] //=>获取最后一个字符 str.length-1最后一项索引 str[10000] //=>undefined 不存在这个索引 //循环输出字符串中的每一个字符 for (let i = 0; i < str.length; i++) { let char = str[i]; console.log(char); }
charAt / charCodeAt
/*
* charAt:根据索引获取指定位置的字符
* charCodeAt:获取指定字符的ASCII码值
(Unicode编码值)
* @params
* n [number] 获取字符指定的索引
* @return
* 返回查找到的字符
* 找不到返回的是空字符串不是undefined,
或者对应的编码值
*/
let str = 'zhufengpeixunyangfanqihang';
console.log(str.charAt(0)); //=>'z'
console.log(str[0]); //=>'z'
console.log(str.charAt(10000)); //=>''
console.log(str[10000]); //=>undefined
console.log(str.charCodeAt(0)); //=>122
console.log(String.fromCharCode(122));//=>'z'
substr / substring / slice
/*
* 都是为了实现字符串的截取(在原来字符串中查找
到自己想要的)
* substr(n,m):从索引n开始截取m个字符,m
不写截取到末尾(后面方法也是)
* substring(n,m):从索引n开始找到索引为m
处(不含m)
* slice(n,m):和substring一样,都是找到
索引为m处,但是slice可以支持负数作为索引,其余
两个方法是不可以的
*/
let str = 'zhufengpeixunyangfanqihang';
console.log(str.substr(3, 7));
//=>'fengpei'
console.log(str.substring(3, 7));
//=>'feng'
console.log(str.substr(3));
//=>'fengpeixunyangfanqihang' 截取到末尾
console.log(str.substring(3, 10000));
//=>'fengpeixunyangfanqihang' 截取到末尾(超过索引的也只截取到末尾)
console.log(str.substring(3, 7));
//=>'feng'
console.log(str.slice(3, 7)); //=>'feng'
console.log(str.substring(-7, -3));
//=>'' substring不支持负数索引
console.log(str.slice(-7, -3));
//=>'nqih' slice支持负数索引 =>快捷查找:负数索引,我们可以按照 STR.LENGTH+负索引 的方式找 =>slice(26-7,26-3) =>slice(19,23)
indexOf / lastIndexof / includes
/*
* 验证字符是否存在
* indexOf(x,y):获取x第一次出现位置的索
引,y是控制查找的起始位置索引
* lastIndexOf(x):最后一次出现位置的索引
* =>没有这个字符,返回的结果是-1
*/
let str = 'zhufengpeixunyangfanqihang';
console.log(str.indexOf('n')); //=>5
console.log(str.lastIndexOf('n'));//=>24
console.log(str.indexOf('@')); //=>-1 不存在返回-1
if (str.indexOf('@') === -1) {
// 字符串中不包含@这个字符
}
console.log(str.indexOf('feng')); //=>3 验证整体第一次出现的位置,返回的索引是第一个字符所在位置的索引值
console.log(str.indexOf('peiy')); //=>-1
console.log(str.indexOf('n', 7)); //=>12 查找字符串索引7及之后的字符串中,n第一次出现的位置索引
if (!str.includes('@')) {
console.log('当前字符串不包含@');
}
toUpperCase / toLowerCase
/*
* 字符串中字母的大小写转换
* toUpperCase():转大写
* toLowerCase():转小写
*/
let str = 'ZhuFengPeiXunYangFanQiHang';
str = str.toUpperCase();
console.log(str);//=>'ZHUFENGPEIXUNYANGFANQIHANG'
str = str.toLowerCase();
console.log(str);//=>'zhufengpeixunyangfanqihang'
// 实现首字母大写
str = str.substr(0, 1).toUpperCase() +
str.substr(1);
console.log(str);//=>'Zhufengpeixunyangfanqihang'
split
/*
* split([分隔符]):把字符串按照指定的分隔符拆
分成数组(和数组中join对应)
*
* split支持传递正则表达式
*/
// 需求:把|分隔符变为,分隔符
let str = 'music|movie|eat|sport';
let ary = str.split('|'); //=>["music","movie", "eat", "sport"]
str = ary.join(',');
console.log(str);
//=>"music,movie,eat,sport"
replace
/*
* replace(老字符,新字符):实现字符串的替换(经
常伴随着正则而用)
*/
let str = '珠峰@培训@扬帆@起航';
// str = str.replace('@','-');
// console.log(str); //=>"珠峰-培训@扬帆@起航" 在不使用正则表达式的情况下,执行一次REPLACE只能替换一次字符
str = str.replace(/@/g,'-');
console.log(str); //=>珠峰-培训-扬帆-起航
match
// match() 方法检索返回一个字符串匹配正则表达式的结果。
const paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
const regex = /[A-Z]/g;
const found = paragraph.match(regex);
console.log(found);
// expected output: Array ["T", "I"]
localCompare
/*
localeCompare() 方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。
返回一个数字表示是否 引用字符串 在排序中位于 比较字符串 的前面,后面,或者二者相同。
当 引用字符串 在 比较字符串 前面时返回 -1
当 引用字符串 在 比较字符串 后面时返回 1
相同位置时返回 0
切勿依赖于 -1 或 1 这样特定的返回值。不同浏览器之间(以及不同浏览器版本之间) 返回的正负数的值各有不同,因为W3C规范中只要求返回值是正值和负值,而没有规定具体的值。一些浏览器可能返回-2或2或其他一些负的、正的值。
*/
// The letter "a" is before "c" yielding a negative value
'a'.localeCompare('c');
// -2 or -1 (or some other negative value)
// Alphabetically the word "check" comes after "against" yielding a positive value
'check'.localeCompare('against');
// 2 or 1 (or some other positive value)
// "a" and "a" are equivalent yielding a neutral value of zero
'a'.localeCompare('a');
// 0
trim / trimStart(别名:trimLeft) / trimEnd(别名:trimRight)
/*
trim() 方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR等)。
trimStart() 方法从字符串的开头删除空格。trimLeft() 是此方法的别名。
trimEnd() 方法从一个字符串的末端移除空白字符。trimRight() 是这个方法的别名。
*/
const greeting = ' Hello world! ';
console.log(greeting);
// expected output: " Hello world! ";
console.log(greeting.trim());
// expected output: "Hello world!";
const greeting = ' Hello world! ';
console.log(greeting);
// expected output: " Hello world! ";
console.log(greeting.trimStart());
// expected output: "Hello world! ";
const greeting = ' Hello world! ';
console.log(greeting);
// expected output: " Hello world! ";
console.log(greeting.trimEnd());
// expected output: " Hello world!";
控制台输出 String.prototype 查看所有字符串中提供的 方法
实现一些常用的需求
时间字符串的处理
let time = '2019-7-24 12:6:23';
//=> 变为自己需要呈现的格式,例如:
// "2019年07月24日 12时06分23秒"
// "2019年07月24日"
// "07/24 12:06"
// ...
//不足十位补零的方法
let addZero = val => val.length < 2 ?'0' + val : val;
//处理方式
let ary = time.split(/(?: |-|:)/g);
//=>["2019", "7", "24", "12", "6", "23"]
time = ary[0] + '年' + addZero(ary[1]) +'月' + addZero(ary[2]) + '日';
实现一个方法 queryURLParameter 获取一个URL地 址问号后面传递的参数信息
/*
* queryURLParams:获取URL地址中问号传参的信
息和哈希值
* @params
* url [string] 要解析的URL字符串
* @return
* [object] 包含参数和哈希值信息的对象
* by zhouxiaotian on 2019/07/24
16:29:00
*/
function queryURLParams(url) {
//1.获取?和#后面的信息
let askIn = url.indexOf('?'),
wellIn = url.indexOf('#'),
askText = '',
wellText = '';
// #不存在
wellIn === -1 ? wellIn = url.length:null;
// ?存在
askIn >= 0 ? askText =url.substring(askIn + 1, wellIn) : null;
wellText = url.substring(wellIn +1);
//2.获取每一部分信息
let result = {};
wellText !== '' ? result['HASH'] =wellText : null;
if (askText !== '') {
let ary = askText.split('&');
ary.forEach(item => {
let itemAry =item.split('=');
result[itemAry[0]] =itemAry[1];
});
}
return result;
}
/*
//基于正则封装的才是最完美的
function queryURLParams(url) {
let result = {},
reg1 = /([^?=&#]+)=([^?=&#]+)/g,
reg2 = /#([^?=&#]+)/g;
url.replace(reg1, (n, x, y) =>
result[x] = y);
url.replace(reg2, (n, x) =>
result['HASH'] = x);
return result;
}
*/
let aa ='http://www.zhufengpeixun.cn/index.html?lx=1&name=zhufeng&teacher=aaa#box';
let paramsObj = queryURLParams(aa);
console.log(paramsObj);