创建字符串 ""
let str = "字符串的内容"
特殊符号使用\进行转义
- \" 表示 "
- \' 表示 '
- \n 表示换行
- \r 表示回车
- \t 表示制表符
- \b 表示空格
- \\ 表示\
还可以使用转义字符输入Unicode编码
console.log('\u2600')
网页中使用Unicode编码,格式如下:
&#编码;
Unicode编码采用的是16进制,但是,这里的编码需要使用10进制
<h1 style="font-size: 60px;">⚄</h1>
获取字符串的长度
str.length
获取字符串的存储长度
英文占一个字符位,其他字符占两个字符位
function getZFWlength(string) {var count = 0;for (var i = 0; i < string.length; i++) {//对每一位字符串进行判断,如果Unicode编码在0-127,计数器+1;否则+2if (string.charCodeAt(i) < 128 && string.charCodeAt(i) >= 0) {count++;} else {count += 2;}}
}
获取字符串的像素长度(显示宽度)
字符串的像素长度,即字符串在页面中的显示宽度,和页面css的 fontSize fontFamily有关。
计算思路:创建一个用span包裹的字符串标签,其 window.getComputedStyle的计算值 - offsetWidth 即字符串在页面中的显示宽度
若计算像素高度,原理相同,见注释部分
// 获取字符串的像素宽度function getPXwidth(str, fontSize = "12px", fontFamily = "Microsoft YaHei") {var span = document.createElement("span");var result = {};result.width = span.offsetWidth;result.height = span.offsetHeight;span.style.visibility = "hidden";span.style.fontSize = fontSize;span.style.fontFamily = fontFamily;span.style.display = "inline-block";document.body.appendChild(span);if (typeof span.textContent != "undefined") {span.textContent = str;} else {span.innerText = str;}result.width = parseFloat(window.getComputedStyle(span).width) - result.width;// 字符串的显示高度// result.height = parseFloat(window.getComputedStyle(span).height) - result.height;return result.width;}
Unicode 编码转字符
let result1 = String.fromCharCode(72); // H
获取字符在字符串中的下标
索引值 = str.indexOf(想要查询的字符,查询的起始位置);
- indexOf() 从前向后查找
- lastIndexOf()从后向前查找
若字符串含有目标字符,返回其第一次出现的下标;如果没有找到则返回 -1,可用于判断字符串是否包含目标字符。
获取指定位置字符 [] 或 charAt()
str[index] // 如 str[0]
// 或
字符 = str.charAt(index);
字符串中第一个字符的下标是 0。如果参数 index 不在 [0, string.length) 之间,该方法将返回一个空字符串。
遍历字符串
for(let char of string){console.log("字符:"+char);
}
字符串拼接 +
var name = 'smyhvae';var age = '26';console.log('name:'+name+',age:'+age); //传统写法console.log(`name:${name},age:${age}`); //ES6 写法
字符串重复 repeat
str.repeat(5) //abcabcabcabcabc
字符串截取
slice【推荐】
字符串 = str.slice(开始索引, 结束索引); //两个参数都是索引值。包左不包右。
- (2, 5) 截取时,包左不包右。
- (2) 表示从指定的索引位置开始,截取到最后。
- (-3) 表示从倒数第几个开始,截取到最后。
- (1, -1) 表示从第2个截取到倒数第一个。
- (5, 2) 表示前面的大,后面的小,返回值为空。
substring
字符串 = str.substring(开始索引, 结束索引); //两个参数都是索引值。包左不包右。
- substring()不能接受负值作为参数。如果传递了一个负值,则默认使用0。
- substring()还会自动调整参数的位置,如果第二个参数小于第一个,则自动交换。比如说, substring(1, 0)截取的是第一个字符。
substr【不推荐】
ECMAscript 没有对 substr() 方法进行标准化,因此不建议使用它。
字符串 = str.substr(开始索引, 截取的长度);
- (2,4):从索引值为2的字符开始,截取4个字符。
- (1):从指定位置开始,截取到最后。
- (-3):从倒数第几个开始,剪到最后.
- 不包括前大后小的情况。
字符串拆分为数组 split
var str = "qian, gu, yi, hao"; // 用逗号隔开的字符串var array = str.split(","); // 将字符串 str 拆分成数组,通过逗号来拆分console.log(array); // 打印结果是数组:["qian", " gu", " yi", " hao"]//split()方法:字符串变数组var str3 = "大地|许嵩|smyhvae";console.log(str3.split()); // 无参数,表示:把字符串作为一个元素添加到数组中。console.log(str3.split("")); //参数为空字符串,则表示:分隔字符串中每一个字符,分别添加到数组中console.log(str3.split("|")); //参数为指定字符,表示:此字符将不会出现在数组的任意一个元素中
拆分字符串中的词为数组【需lodash】
_.words('fred, barney, & pebbles');
// => ['fred', 'barney', 'pebbles']_.words('fred, barney, & pebbles', /[^, ]+/g);
// => ['fred', 'barney', '&', 'pebbles']
字符串替换 replace()
将字符串中的指定内容,替换为新的内容并返回。不会修改原字符串。
新的字符串 = str.replace(被替换的内容,新的内容);
//replace()方法:替换var str2 = "Today is fine day,today is fine day !!!"console.log(str2);console.log(str2.replace("today","tomorrow")); //只能替换第一个todayconsole.log(str2.replace(/today/gi,"tomorrow")); //这里用到了正则,才能替换所有的today
去除字符串前后的空白 trim()
//去除前后的空格,trim();var str1 = " a b c ";console.log(str1.trim());
去除字符串头部的空白【使用lodash】
_.trimStart(' abc ');
// => 'abc '_.trimStart('-_-abc-_-', '_-');
// => 'abc-_-'
去除字符串尾部的空白【使用lodash】
_.trimEnd(' abc ');
// => ' abc'_.trimEnd('-_-abc-_-', '_-');
// => '-_-abc'
是否包含指定字符串 includes()
str.includes('a')
是否以指定字符串开头 startsWith ()
str.startsWith('d')
是否以指定字符串结尾 endsWith ()
str.endsWith('g')
字符串转为html
var str = "你好";console.log(str.anchor())console.log(str.big())console.log(str.sub())console.log(str.sup())console.log(str.link("http://www.baidu.com"));console.log(str.bold())
<a name="undefined">你好</a>
<big>你好</big>
<sub>你好</sub>
<sup>你好</sup>
<a href="http://www.baidu.com">你好</a>
字符串填充
时间自动补0
var dt = new Date(dateStr)
var hh = dt.getHours().toString().padStart(2, '0')
使用lodash
https://www.lodashjs.com/docs/lodash.pad
_.pad('abc', 8);
// => ' abc '_.pad('abc', 8, '_-');
// => '_-abc_-_'_.pad('abc', 3);
// => 'abc'
驼峰写法【需lodash】
_.camelCase('Foo Bar');
// => 'fooBar'_.camelCase('--foo-bar--');
// => 'fooBar'_.camelCase('__FOO_BAR__');
// => 'fooBar'
首字母大写【需lodash】
_.capitalize('FRED');
// => 'Fred'
首字母小写【需lodash】
_.lowerFirst('Fred');
// => 'fred'_.lowerFirst('FRED');
// => 'fRED'
全部大写
str.toUpperCase()
全部小写
str.toLowerCase()
以空格分开单词,并转换为小写【需lodash】
_.lowerCase('--Foo-Bar--');
// => 'foo bar'_.lowerCase('fooBar');
// => 'foo bar'_.lowerCase('__FOO_BAR__');
// => 'foo bar'
以空格分开单词,并转换为大写【需lodash】
_.upperCase('--foo-bar');
// => 'FOO BAR'_.upperCase('fooBar');
// => 'FOO BAR'_.upperCase('__foo_bar__');
// => 'FOO BAR'