JavaScript学习笔记(二十一)——字符串内置功能

字符串内置功能

es5中:

字符串的内置功能

函数 功能描述
anchor() 创建 HTML 锚。
big() 用大号字体显示字符串。
blink() 显示闪动字符串。
bold() 使用粗体显示字符串。
charAt() 返回在指定位置的字符。
charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
concat() 连接字符串。
fixed() 以打字机文本显示字符串。
fontcolor() 使用指定的颜色来显示字符串。
fontsize() 使用指定的尺寸来显示字符串。
fromCharCode() 从字符编码创建一个字符串。
indexOf() 检索字符串。 没有就为-1
italics() 使用斜体显示字符串。
lastIndexOf() 从后向前搜索字符串。
link() 将字符串显示为链接。
localeCompare() 了解 用本地特定的顺序来比较两个字符串。
match() 找到一个或多个正则表达式的匹配。
replace() 替换与正则表达式匹配的子串。
search() 检索与正则表达式相匹配的值。
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分。和subsring()一起记忆。
small() 使用小字号来显示字符串。
split() 把字符串分割为字符串数组。 笔试题:把网页的url的参数解析为一个对象。见后文~
strike() 使用删除线来显示字符串。
sub() 把字符串显示为下标。
substr() 重要 从起始索引号提取字符串中指定数目的字符。 例如:(-3,2)意思就是从倒数后面第三个开始往后面取2个。
substring() 重要全小写 提取字符串中两个指定的索引号之间的字符。 例如:(2,6)取索引号2到6之间的字符,不包含6。【左闭右开)
sup() 把字符串显示为上标。
toLocaleLowerCase() 把字符串转换为小写。
toLocaleUpperCase() 把字符串转换为大写。
toLowerCase() 把字符串转换为小写。
toUpperCase() 把字符串转换为大写。
toSource() 代表对象的源代码。
toString() 返回字符串。
valueOf() 返回某个字符串对象的原始值。

其中加特效的不常用,用的时候一般是在object上添加mytool函数,然后进行拼接。

下面的必须掌握:

  1. toUpperCase()

    将字符串转换为大写。

    首字母大写需要自己设计,官方没有提供。

    var str = 'hello';
    String.prototype.capUpperCase = function (e) {
        var re = this[0].toUpperCase();
        for (var i = 1; i < this.length; i++) {
                    re += this[i];
                }
                return re;
            }
            var re = str.capUpperCase();
            console.log(re);  //Hello
  2. split()

    把字符串分割为字符串数组

            var str = 'aasfscf';
            var re = str.split('sf');//以sf为分割线
            console.log(re)//打印['aa', 'scf']
  3. slice()

    提取字符串的片断,并在新的字符串中返回被提取的部分。和subsring()一起记忆。

            var str = 'aasfscf';
            var re = str.slice(2, 4); //sf
            var re2 = str.substring(2, 4) //sf
            console.log(re, re2)
  4. substring()和substr( )

    注意都是小写!!!

    区别:

    • substr(-3,2)意思就是从倒数后面第三个开始往后面取2个。

    • substring(-3,2)意思就是从下标-3开始取到下标2,不包含-3,【左闭右开)。

    var str='aasfscf';
    var re1=str.substring(-3,2);//aa
    var re1=str.substr(-3,2);//sc
    console.log(re1,re2);

     

  5. indexof( ) 检测指定元素下标。

    var str='abcsfggsd';
    var re=str.indexOf('csf');//第二个参数不写默认为0  结果打印2
    var re2=str.indexOf('a',1);//从下标1开始往后面搜查 没找到 打印-1

    笔试题:找出“的”出现的次数:

            String.prototype.frequency = function (str) {
                var re = 1;
                var count = 0;
                do {
                    re = this.indexOf(str, re + 1);
                    if (re != -1) {
                        count++;
                    }
                } while (re != -1);
                return count;
            }
    ​
            var str ='一个人的水平可以体现在说话上。 说话是本能,但会说话却是需要不断学习的必修课。 石油大王洛克菲勒说过一句话: 假如沟通是一样商品,我愿意付出比任何事物都高昂的价格来购买。 不会沟通的人,总是在无形中为自己筑起一道道围墙。';
            var re = str.frequency('的');
            console.log(re);  //打印4
  6. toString( )和valueof( )

    • toString( ):返回字符串。

    • valueof( ):返回某个字符串对象的原始值。

            var str = 'hello';
            var re = str.valueOf();
            console.log(re);
    ​
            str.age=20;//隐式操作 字符串是基本数据类型,所有的基本数据当作对象使用时,点语法隐式操作(隐式包装一个对象)
            /* 
            隐式操作:
            var str=new String('hello');        
            */
            console.log(str.age);//undifined

es6新增:

1、子串的识别

es5中:

indexOf()

es6中新增:

  1. include():返回布尔值,判断是否找到参数字符串。

  2. startsWith():返回布尔值,判断参数字符串是否在原字符串的头部

  3. endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部

注意:

  • 这三个方法只返回布尔值,如果需要知道子串的位置,还是得用 indexOf 和 lastIndexOf 。

  • 这三个方法如果传入了正则表达式而不是字符串,会抛出错误。而 indexOf ()和 lastIndexOf() 这两个方法,它们会将正则表达式转换为字符串并搜索它。

  • 以上三个方法都可以接受两个参数,需要搜索的字符串,和可选的搜索起始位置索引。

例子:

let string = "apple,banana,orange";
string.includes("banana");     // true
string.startsWith("apple");    // true
string.endsWith("apple");      // false
string.startsWith("banana",6)  // true

2、字符串重复

repeat():返回新的字符串,表示将字符串重复指定次数返回。

console.log("Hello,".repeat(2));  // "Hello,Hello,"

分下面几种情况:

  • 如果参数是小数,向下取整

console.log("Hello,".repeat(3.2));  // "Hello,Hello,Hello,"
  • 如果参数是 0 至 -1 之间的小数,会进行取整运算,0 至 -1 之间的小数取整得到 -0 ,等同于 repeat 零次

console.log("Hello,".repeat(-0.5));  // "" 
  • 如果参数是 NaN,等同于 repeat 零次

console.log("Hello,".repeat(NaN));  // "" 
  • 如果参数是负数或者 Infinity ,会报错:

console.log("Hello,".repeat(-1));  
// RangeError: Invalid count value
​
console.log("Hello,".repeat(Infinity));  
// RangeError: Invalid count value
  • 如果传入的参数是字符串,则会先将字符串转化为数字

console.log("Hello,".repeat("hh")); // ""
console.log("Hello,".repeat("2"));  // "Hello,Hello,"

3、字符串补全

  • padStart:返回新的字符串,表示用参数字符串从头部补全原字符串。

  • padEnd:返回新的字符串,表示用参数字符串从尾部补全原字符串。

以上两个方法接受两个参数,第一个参数是指定生成的字符串的最小长度,第二个参数是用来补全的字符串。

  • 如果没有指定第二个参数,默认用空格填充。

console.log("h".padStart(5,"o"));  // "ooooh"
console.log("h".padEnd(5,"o"));    // "hoooo"
console.log("h".padStart(5));      // "    h"
  • 如果指定的长度小于或等于原字符串的长度,则返回原字符串:

console.log("hello".padStart(5,"A"));  // "hello"
  • 如果原字符串加上补全字符串长度大于指定长度,则截去超出位数的补全字符串:

console.log("hello".padEnd(10,",world!"));  // "hello,worl"
  • 常用于补全位数

console.log("123".padStart(10,"0"));  // "0000000123"

4、模板字符串

模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。

  • 普通字符串

    let string = `Hello'\n'world`;
    console.log(string); 
  • 多行字符串

    let string1 =  `Hey,
    can you stop angry now?`;
    console.log(string1);
  • 变量名写在 ${} 中,${} 中可以放入 JavaScript 表达式。比较常用。

    let name = "Mike";
    let age = 27;
    let info = `My Name is ${name},I am ${age+1} years old next year.`
    console.log(info);
  • 字符串中调用函数

    function f(){
      return "have fun!";
    }
    let string2= `Game start,${f()}`;
    console.log(string2);  // Game start,have fun!

注意:模板字符串中的换行和空格都是会被保留的。

5、标签模板

标签模板,是一个函数的调用,其中调用的参数是模板字符串。

alert`Hello world!`;
// 等价于
alert('Hello world!');

应用:过滤 HTML 字符串,防止用户输入恶意内容。

function f(stringArr,...values){
    let result = "";
    for (let i = 0; i < stringArr.length; i++) {
        values[i] = stringArr[i];
        if (values[i]) {
        result += String(values[i]).replace(/&/g, "&amp;")
                        .replace(/</g, "&lt;")
                        .replace(/>/g, "&gt;");
        }
     }
     return result;
}
var name = f('<Amy&MIke>');
element.innerHTML = `<p>Hi, ${name}.I would like send you some message.</p>`;
posted @ 2022-06-24 17:42  小狐狸ya  阅读(28)  评论(0编辑  收藏  举报