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>`;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值