js字符基础

字符串

字符串的创建
字符串 (String) 对象是JavaScript原生三大包装对象之一,用来生成字符串对象。

   var str = "hello world";                 //常量,基本类型创建

   var str2 = new String("hello world");    //构造函数创建


   字符串的属性:
   str.length        //字符串的长度

字符串实例方法之常用API

1、 String.charAt()
charAt方法返回指定位置的字符,参数是从0开始编号的位置。

   var str = "hello,world";
   
   console.log(str.charAt(1)); // e

2、String.indexOf(data,start);
indexOf方法用于返回某个数组或者字符串中规定字符或者字符串的位置

   var str = "abcdefg”;

   str.indexOf("a");    //0 返回当前查询字符所在的位置的下标,如无,返回-1,start表示从第几位开始查询

indexOf方法还可以接受第二个参数,表示从该位置开始向后匹配。

   'hello world'.indexOf('o', 6) // 7

3、String.lastIndexOf(data,start)
lastIndexOf方法的用法跟indexOf方法一致,主要的区别是lastIndexOf从尾部开始匹配,indexOf则是从头部开始匹配。

   'hello world'.lastIndexOf('o') // 7

另外,lastIndexOf的第二个参数表示从该位置起向前匹配。

   'hello world'.lastIndexOf('o', 6) // 4

4、String.slice()
slice方法用于从原字符串取出子字符串并返回,不改变原字符串。它的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)。

   var str="JavaScript"
   str.slice(0, 4) // "Java"

如果省略第二个参数,则表示子字符串一直到原字符串结束。

   var str="JavaScript"
       str.slice(4) // "Script"

如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度。

   var str="JavaScript"
       str.slice(-6) // "Script"
       str.slice(0, -6) // "Java"
       str.slice(-2, -1) // "p"

如果第一个参数大于第二个参数,slice方法返回一个空字符串。

   "JavaScript".slice(2, 1) // ""

5、String.substring()
substring方法用于从原字符串截取子字符串并返回,不改变原字符串,跟slice方法很相像。它的第一个参数表示子字符串的开始位置,第二个位置表示结束位置(返回结果不含该位置)。

   "JavaScript".substring(0, 4) // "Java"

如果省略第二个参数,则表示子字符串一直到原字符串的结束。

   "JavaScript".substring(4) // "Script"

如果第一个参数大于第二个参数,substring方法会自动更换两个参数的位置。

   "JavaScript".substring(10, 4) // "Script"
   // 等同于
   "JavaScript".substring(4, 10) // "Script"

上面代码中,调换substring方法的两个参数,都得到同样的结果。

如果参数是负数,substring方法会自动将负数转为0。

   "JavaScript".substring(-3) // "JavaScript"
   "JavaScript".substring(4, -3) // "Java"

6、String.split("-");

split方法通过指定字符分割字符串,返回一个数组

   var str = "hello world";
     
   console.log(str.split())    // ["hello world"]
   console.log(str.split(""))  //["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]
   console.log(str.split("o"))  //["hell", " w", "rld"]

7、String.replace();
replace方法用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)。

   "aaa".replace('a', 'b') // "baa"

8、String.concat()
concat方法用于连接两个字符串,返回一个新字符串,不改变原字符串。

   var a1 = 'abc';
   var a2 = 'def';
   
   a1.concat(s2) // "abcdef"
   a1 // "abc"

该方法可以接受多个参数。

   ''a''.concat(''b'', ''c'') // "abc"

如果参数不是字符串,concat方法会将其先转为字符串,然后再连接。

   var one = 1;
   var two = 2;
   var three = '3';
   
   ''.concat(one, two, three) // "123"
   one + two + three // "33"

上面代码中,concat方法将参数先转成字符串再连接,所以返回的是一个三个字符的字符串。作为对比,加号运算符在两个运算数都是数值时,不会转换类型,所以返回的是一个两个字符的字符串。

9、String.charCodeAt()
charCodeAt方法返回字符串指定位置的 Unicode 码点(十进制表示),相当于String.fromCharCode()的逆操作。

   ''abc''.charCodeAt(1) // 98

上面代码中,abc的1号位置的字符是b,它的 Unicode 码点是98。

如果没有任何参数,charCodeAt返回首字符的 Unicode 码点。

   ''abc''.charCodeAt() // 97

如果参数为负数,或大于等于字符串的长度,charCodeAt返回NaN。

   ''abc''.charCodeAt(-1) // NaN
   ''abc''.charCodeAt(4) // NaN

注意,charCodeAt方法返回的 Unicode 码点不会大于65536(0xFFFF),也就是说,只返回两个字节的字符的码点。如果遇到码点大于 65536 的字符(四个字节的字符),必需连续使用两次charCodeAt,不仅读入charCodeAt(i),还要读入charCodeAt(i+1),将两个值放在一起,才能得到准确的字符。

10、String.fromCharCode()
String的意思就是不能用自己定义的字符串名字来调用,只能用String来定义调用。接受一个或多个指定的Unicode值,然后返回一个或多个字符串。(把unicode编码转换为字符串)。

   var str = "中国";
   console.log(String.fromCharCode("0x4E2D"))   //中
   console.log(String.fromCharCode(20013))

在这里插入图片描述
还有很多字符方法我就不一一列举了,可以参照下面的链接
http://www.w3school.com.cn/jsref/jsref_obj_string.asp

字符串的案例

js的重要作用之一----交互----人机交互(事件)----服务器交互(ajax)

服务器交互,从服务器获取数据,数据的处理方式,将json----转换成字符串操作。

字符串操作重要性不言而喻!

字符串的操作:从1+1=2到1+1=11,有什么样的区别

案例:商品列表

首先,我们可以先看下效果
在这里插入图片描述
代码实现

   <!DOCTYPE html>
   <html lang="en">
   <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <meta http-equiv="X-UA-Compatible" content="ie=edge">
       <title>商品列表</title>
       <style>
       *{
           margin: 0;
           padding: 0;
       }
       #box{
           width: 1200px;
           overflow: auto;
           margin: 200px auto;
           border:1px solid pink;
       }
       #box div{
           width: 300px;
           height: 300px;
           box-sizing: border-box;
           border:1px solid red;
           text-align: center;
           overflow: hidden;
           float:left;
       }
       #box div h3{
           color: red;
           font-size: 20px;
           line-height: 40px;
           padding-top: 20px;
       }
       #box div img{
           width: 160px;
           height: 160px;
       }
       #box div span{
           font-size: 18px;
           color: #ccc;
           padding-top: 10px;
       }
       </style>
   </head>
   <body>
       <div id="box">
           <p>抱歉,商品已售空。感谢您的光顾。</p>
         
       </div>
   </body>
   <script>
   var data =[{
       img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/beee478168e5c4fd0d66369386fddbbe.jpg?thumb=1&w=250&h=250&f=webp&q=90",
       name:"Redmi K20 Pro 6GB+128GB",
       price:"2229元"
   },{
       img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/0ce61b71e2f81df62bd0c05aaa901d22.jpg?thumb=1&amp;w=250&amp;h=250&amp;f=webp&amp;q=90 ",
       name:"Redmi Note 7 ",
       price:"1199元"
   },{
       img:"https:cdn.cnbj1.fds.api.mi-img.com/mi-mall/a7f616f2e931d6433f36fb356693c3d1.jpg?thumb=1&w=250&h=250&f=webp&q=90",
       name:"小米9 王源限量版",
       price:"3599元"
   },{
       img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/411d540271f6efbdd882fa33daee0de3.jpg?thumb=1&w=250&h=250&f=webp&q=90",
       name:"小米MIX 3 8GB+128GB",
       price:"2559元"
   },{
       img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/beee478168e5c4fd0d66369386fddbbe.jpg?thumb=1&w=250&h=250&f=webp&q=90",
       name:"Redmi K20 Pro 6GB+128GB",
       price:"2229元"
   },{
       img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/0ce61b71e2f81df62bd0c05aaa901d22.jpg?thumb=1&amp;w=250&amp;h=250&amp;f=webp&amp;q=90 ",
       name:"Redmi Note 7 ",
       price:"1199元"
   },{
       img:"https:cdn.cnbj1.fds.api.mi-img.com/mi-mall/a7f616f2e931d6433f36fb356693c3d1.jpg?thumb=1&w=250&h=250&f=webp&q=90",
       name:"小米9 王源限量版",
       price:"3599元"
   },{
       img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/411d540271f6efbdd882fa33daee0de3.jpg?thumb=1&w=250&h=250&f=webp&q=90",
       name:"小米MIX 3 8GB+128GB",
       price:"2559元"
   }];
   // console.log(data);
   
   var obox = document.getElementById("box");
   
   var str="";
   for(var i=0;i<data.length;i++){
       str += '<div><img src="'+data[i].img+'" alt=""><h3>'+data[i].name+'</h3><span>'+data[i].price+'</span></div>'   
   }
   // console.log(str);
   
   obox.innerHTML = str;
   
   </script>
   </html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值