JavaScript学习笔记(六)——JS中的字符串

存储

  • 计算机只能够存储二进制
  • 存储字符串转为二进制
  • 需要有 对照表 方便将 字符二进制 进行转换
  • 这样的 对照表 叫做 编码方式 常见的有 asciiunicode

定义字符串的新的方式

    var str = new String("a");
    console.log(typeof str); // object
    // 转换为字符串的方式就是str.toString();

包装类型:在面向对象的思想中,一切都得是对象。而JS中有一些基本类型,此时就需要 包装 一下,将这些基本类型 包装 成对象类型。

  • 在JS中,基本数据类型(除了undefined、null之外),都有包装类型
  • 字符串的包装类型 String()
  • 布尔型的爆猪肝类型 Boolean()
  • 数字的包装类型 Number()

属性

  • length属性:length属性表示字符串的长度
    // 字符串也可以通过下标获取对应的字符
    var a = "abcdefg";
    console.log(a[2]); // c
    console.log(a.length); // 7

方法

  • charAt 参数是数字,返回值是该数字所指向的下标字符
  • charCodeAt 参数是数字,返回值是该数字所指向的下标字符的编码
  • split 参数是分隔符,返回值是以该参数作为切割之后的数组
  • slice 该方法用于截取字符串的一段,第一个参数表示截取的开始位置(包含) 第二个参数表示截取的结束位置(不包含),左闭右开
  • concat 用法与数组方法中的concat一致,都是拼接任意个内容,但是不会拆分数组,只会将内容向字符串进行转换
  • indexOf 将会返回参数字符串的第一个字符在原字符串中的位置,如果没有匹配到完全一样的字符串,返回-1
  • match 用于匹配字符串,但是它更与正则表达式配合的多
  • search 查询字符串
  • toUpperCase 该方法用于将所有的字符串中的英文大写
  • toLowerCase 该方法用于将所有的字符串中的英文小写
  • replace 替换,将原字符串中的某些个字符替换成参数指定的字符
  • substring 该方法用于截取字符串中的一段,与slice很类似,也是截取字符串,但是slice的参数只能是参数一小于参数二,substring能够参数一小于参数二
  • substr 该方法也用于截取字符串中的一段 第一个参数依旧表示截取的开始位置 第二个参数表示要截取的字符串的长度
  • 注意:字符串的所有方法都不会改变原字符串
        // 1、charAt 参数是数字 返回值是该数字所指向的下标字符
        var str1 = "abc";
        var char1 = str1.charAt(1);
        console.log(char1); // b
        console.log(str1[1]); // b
        
        // 2、charCodeAt 参数是数字 返回值是该数字所指向的下标字符的编码
        var code1 = str1.charCodeAt(2);
        console.log(code1); // c的字符编码 99
        var str2 = "你好";
        var code2 = str2.charCodeAt(0);
        console.log(code2); // “你”的字符编码 20320

        // 3、split 参数是分隔符 返回值是以该参数作为切割之后的数组
        var str3 = "1-2-3-4";
        var arr1 = str3.split("-");
        console.log(str3); // "1-2-3-4"
        console.log(arr1); // ["1", "2", "3", "4"]

        // 4、slice 该方法用于截取字符串的一段 第一个参数表示截取的开始位置(包含) 第二个参数表示截取的结束位置(不包含)
        // 用法和数组一样
        var str4 = "abcdefg";
        var str4_1 = str4.slice(0); 
        var str4_2 = str4.slice(1,4); 
        var str4_3 = str4.slice(1,-2);  
        var str4_4 = str4.slice(-5,-1); 
        console.log(str4_1); // abcdefg
        console.log(str4_2); // bcd
        console.log(str4_3); // bcde
        console.log(str4_4); // cdef

        // 5、concat 
        // 用法与数组一致,都是拼接任意个内容,但是不会拆分数组,只会将内容向字符串进行转换
        var str5_1 = "abc";
        var str5_2 = "def";
        var str5_3 = str5_1.concat(str5_2,[1,2,3,[4,5]],{});
        console.log(str5_3); // abcdef1,2,3,4,5[object Object]

        // 6、indexOf() 将会返回参数字符串的第一个字符在源原字符串中的位置
        // 如果没有匹配到完全一样的字符串,返回-1
        var str6 = "abcdefgcdefdddd";
        var str6_1 = str6.indexOf("cde"); // 默认从下标0开始查询
        console.log(str6_1); // 2
        var str6_2 = str6.indexOf("cde",5); // 第二个参数表示从哪个下标开始查询
        console.log(str6_2); // 7
        var str6_3 = str6.indexOf("cdf");
        console.log(str6_3); //-1

        // 7、match() 用于匹配字符串,但是它更与正则表达式配合的多 
        var str7 = "abcdefg";
        console.log(str7.match("ef")); // ["ef", index: 4, input: "abcdefg", groups: undefined]

        // 8、search() 查询字符串
        var str8 = "abcdefcdefddd";
        console.log(str8.search("cde")); // 2 默认从下标0开始查询

        // 9、toUpperCase 该方法用于将所有的字符串中的英文大写
        var str = "abc";
        var str1 = str.toUpperCase();
        console.log(str1); // ABC       

        // 10、toLowerCase 该方法用于将所有的字符串中的英文小写
        var str = "ABCDEFG,你好,abcde";
        var str1 = str.toLowerCase();
        console.log(str1); // abcdefg,你好,abcde 

        // 不区分大小写的验证码原理
        var code = "abcd";
        var check = prompt("请输入验证码","");
        console.log(code);
        console.log(code === check.toLowerCase());

        // 11、replace
        var str11 = "这个敏感字眼——卧槽,卧槽——是敏感字眼";
        console.log(str11);
        while(str11.indexOf("卧槽") != -1){
            str11 = str11.replace("卧槽","**");
        }
        console.log(str11);
        // 以下方法是使用了正则的知识
        var str11_1 = "这个敏感字眼——卧槽,卧槽——是敏感字眼";
        var str11_2 = str11_1.replace(/垃圾/g,"xx");
        console.log(str11_2);

        // 12、substring 该方法用于截取字符串中的一段
        // 与slice很类似,也是截取字符串,但是slice的参数只能是参数一小于参数二,substring能够参数一小于参数二
        var str12_1 = "abcdefg";
        var str12_2 = str12_1.slice(1,5);
        var str12_3 = str12_1.substring(1,5);
        var str12_4 = str12_1.substring(5,1);
        console.log(str12_1);
        console.log(str12_2); // bcde
        console.log(str12_3); // bcde
        console.log(str12_4); // bcde

        // 13、substr 该方法也用于截取字符串中的一段 第一个参数依旧表示截取的开始位置 第二个参数表示要截取的字符串的长度
        var str13 = "abcdefghijkl";
        var str13_1 = str13.substr(3, 5);
        console.log(str13_1); // defgh

为什么字符串居然能够调用方法,它不是基本数据类型吗?

字符串这个数据类型,在JS中运行时,JS引擎中解析的时候会先把 a 这个"str"值替换为 var s = new String(“str”);此时就成了一个字符串对象。

        var str1 = new String("abc"); // 这是一个字符串对象
        var str2 = "abc"; // 这是一个字符串
        console.log(typeof str1); //object
        console.log(typeof str2); //string

函数的传参规则

JS中的函数可以执行时传递参数。那么如果在函数内部修改传递进去的参数,会不会影响到函数外部的值呢?
函数在传递参数时,到底是如何传参的呢?

JS中的数据类型分两种: 基本数据类型,引用数据类型
基本数据类型的数据在传递时,复制传递,也就是复制了一份并传递进去,所以在函数内部,如何操作都只是在操作副本。与外部的数据无关。

引用数据类型的数据在传递时,传递引用,也就是把地址复制了一份并传递进去,所以函数内部是可以得到函数外部的数据保存的地址的,如果在函数内部打点或者方括号修改地址内容,则会影响到函数外部,如果在函数内部使用 = 修改变量保存的内容,则不会影响函数外部。

    // 在函数内部修改值类型参数
    var a = 123;
    function demo(b) {
        b = 12;
    }
    demo(a);
    console.log(a); // 123
    // 在函数内部使用等号修改引用类型参数
    var obj = {};
    function demo(b) {
        b = 123;
    }
    demo(obj);
    console.log(obj); // {}
    // 在函数内部使用方括号或者点语法修改引用类型参数
    var obj = {};
    function demo(b) {
        b.a = 10;
        b["b"] = 11;
    }
    demo(obj);
    console.log(obj); // {a: 10, b: 11}
    // 在函数内部先使用方括号或者点语法修改 再使用等号
    var obj = {};
    function demo(b) {
        b.a = 10;
        b["b"] = 11;
        b = {};
        b.c = 12;
    }
    demo(obj);
    console.log(obj); // {a: 10, b: 11} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 字符串对象是JavaScript的一种数据类型,用于表示文本数据。字符串对象可以包含任何字符,包括字母、数字、符号和空格等。在JavaScript字符串对象是不可变的,也就是说一旦创建就不能修改。但是可以通过一些方法来操作字符串对象,如拼接、截取、替换等。常见的字符串方法有concat()、slice()、replace()等。掌握字符串对象的使用可以帮助我们更好地处理文本数据。 ### 回答2: JavaScript字符串对象是一个在JavaScript非常重要的事物。JavaScript字符串对象可以帮助我们在JavaScript编程进行文本操作。通过了解字符串对象,可以使我们更有效地处理字符串数据,并让我们的代码更加强大。 JavaScript字符串对象具有很多方法和属性,可以帮助我们对字符串进行各种操作。以下是一些常用的字符串对象方法: 1. length属性:返回字符串的长度。 2. charAt()方法:返回指定索引位置的字符。 3. concat()方法:连接两个或多个字符串。 4. slice()方法:提取字符串的一部分,并返回一个新字符串。 5. substr()方法:从指定位置开始提取长度为指定的字符。 6. replace()方法:替换字符串的指定文本。 7. split()方法:将字符串转换为数组。 8. toLowerCase()方法:将字符串转换为小写。 9. toUpperCase()方法:将字符串转换为大写。 在JavaScript处理字符串非常重要,因为在处理表单、验证用户输入等方面都需要使用到字符串字符串对象也是最常用的JavaScript对象之一,因此熟悉JavaScript字符串对象将有助于提高程序的效率和简洁性。 需要特别注意字符串是不可修改的,一旦创建了一个字符串对象,就无法修改它的值。所以,任何字符串的修改操作都将返回一个新的字符串。 在编写程序时,应根据需要选择适当的字符串操作方法和属性。例如,在向用户显示错误消息时,可能需要使用charAt()方法或slice()方法来提取并显示错误消息的第一个字符或前几个字符。或者,在对用户输入进行验证时,可以使用indexOf()方法或search()方法来检查输入的字符串是否包含特定的字符或字符串。 总之,JavaScript字符串对象是处理JavaScript编程文本数据的重要工具。通过了解字符串对象的各种方法和属性,可以更加有效和灵活的处理和操纵字符串数据。 ### 回答3: JavaScript字符串对象是一个字符串值的表示。它提供了对字符串值的访问和操作。JavaScript字符串是Unicode字符串,因此它们可以包含任何Unicode字符(包括多字节字符)。 字符串对象的主要方法有: 1. charAt()方法-返回指定索引的字符。该索引是基于零的。例如: var str = "hello world"; console.log(str.charAt(1)); //输出e 2. concat()方法-将一个或多个字符串连接到原始字符串,并返回新字符串。例如: var str1 = "hello "; var str2 = "world"; var newStr = str1.concat(str2); console.log(newStr); //输出hello world 3. indexOf()方法-返回第一个匹配的字符索引。如果没有找到匹配项,则返回-1。例如: var str = "hello world"; console.log(str.indexOf("world")); //输出6 4. lastIndexOf()方法-返回最后一个匹配的字符索引。如果没有找到匹配项,则返回-1。例如: var str = "hello world"; console.log(str.lastIndexOf("l")); //输出9 5. replace()方法-替换字符串的字符。例如: var str = "hello world"; console.log(str.replace("world", "everyone")); //输出hello everyone 6. slice()方法-从字符串提取指定的字符。例如: var str = "hello world"; console.log(str.slice(0, 5)); //输出hello 7. split()方法-将字符串拆分为子字符串,并返回一个数组。例如: var str = "hello world"; console.log(str.split(" ")); //输出["hello", "world"] 字符串对象是JavaScript最常用的对象之一。它提供了许多方法,可以让您对字符串执行各种操作,包括搜索、提取和更改字符。熟练掌握这些方法,可以使您在JavaScript更有效地处理字符串值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值