String 对象

  之前学习的是 基本数据类型 String 类型,现在讨论的是 String对象(包装类型)。

String的特点:字符串的不可变性。

var str = 'abc';
str = 'hello';

    分析上面两行代码,起初给 str 赋值为 'abc'。当重新给 str 赋值的时候,常量 ‘abc’ 不会被修改,依然在内存中。

   重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变。

   注意由于字符串的不可变,在大量拼接字符串的时候会有效率问题。

创建字符串对象

var str = new String('Hello World');      // 通过构造方法来创建字符串对象

  

常用方法

  注意:字符串的所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。

  1、字符方法

charAt()                     // 获取指定位置处字符
charCodeAt()                 // 获取指定位置处字符的 ASCII 码
str[0]                       // HTML5 的方法,IE8+支持,同 charAt() 方法

  2、字符串操作方法

concat()                     // 拼接字符串,等效于+,+更常用
slice()                      // 从 start位置开始,截取到 end 位置,end 取不到
substring()                  // 返回一个字符串在开始索引到结束索引(不包括)之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。
substr(index,length)         // 返回一个字符串中从指定位置开始到指定字符数的字符(length省略,到字符串末尾)

  3、位置方法

indexof()                    // 返回调用它的 String 对象中第一次出现的指定值的索引,如果没有,返回 -1
lastIndexof()                // 返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1,从该字符串的后面向前查找

  4、去除空白

trim()                       // 只能去除字符串前后的空白

  5、大小写转换方法

to(Local)UpperCase()         // 转换为(本地)大写
to(Local)LowerCase()         // 转换为(本地)小写

  6、其他方法

search()                     // 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1
replace(regexp,substr)       // 返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式替换值可以是一个字符串或者一个每次匹配都要调用的回调函数
split()                      // 指定的分隔符字符串将一个String对象分割成字符串数组
fromCharCode()               // 返回由指定的UTF-16代码单元序列创建的字符串(将 ASCII 码转换为字符串)

  

案例:

  1、查找字符串中所有o出现的位置。

1 var s = 'abcoefoxyozzopp';
2 var array = [];
3 do {
4   var index = s.indexOf('o', index + 1);
5   if (index != -1) {
6     array.push(index);
7   }
8 } while (index > -1);
9 console.log(array);

 

  2、把字符串中所有的o替换成!

 1 var s = 'abcoefoxyozzopp';
 2 var index = -1;
 3     do {
 4       index = s.indexOf('o', index + 1);
 5 
 6       if (index !== -1) {
 7         // 替换
 8         s = s.replace('o', '!');
 9       }
10     } while(index !== -1);
11     console.log(s);

 

  3、判断一个字符串中出现次数最多的字符,统计出现次数

 1   var s = 'abcoefoxyozzopp';
 2     var ch;
 3     // 此字符出现的次数
 4     var num;
 5     // 记录字符串中每一个字符出现的次数
 6     var o = {}; 
 7 
 8     for (var i = 0; i < s.length; i++) {
 9       var item = s.charAt(i);
10       if (o[item]) {
11         // 已经有该属性,+1
12         o[item]++;
13       } else {
14         // 对象中没有该属性
15         o[item] = 1;
16       }
17     }
18 
19      // 2 求最大值 并且找到次数最多的字符
20      // 假设最大值是1
21      num = 1;
22      for (var key in o) {
23        if (num < o[key]) {
24         // 最多的次数
25          num = o[key];
26          // 次数最多的字符
27          ch = key;
28        }
29      }
30 
31      console.log(num);
32      console.log(ch);
33      

 

  4、获取 url 后面的参数

 1 // 获取url后面的参数
 2     function getParams(url) {
 3       // 获取? 后面第一个字符的索引
 4       var index = url.indexOf('?') + 1;
 5       // url中?后面的字符串 name=zs&age=18&a=1&b=2
 6       var params = url.substr(index);
 7       // 使用& 切割字符串 ,返回一个数组
 8       var arr = params.split('&');
 9       var o = {};
10       // 数组中每一项的样子 key = value
11       for (var i = 0; i < arr.length; i++) {
12         var tmpArr = arr[i].split('=');
13         var key = tmpArr[0];
14         var value = tmpArr[1];
15 
16         o[key] = value;
17       }
18       return o;
19     }
20     var url = 'http://www.baidu.com/login?name=zs&age=18&a=1&b=2';
21     var obj = getParams(url);
22     console.log(obj);
23 
24     console.log(obj.name);
25     console.log(obj.age);

 

posted on 2019-08-17 10:41  格物致知_Tony  阅读(236)  评论(0编辑  收藏  举报