字符串对象

本文详细介绍了JavaScript中的基本包装类型,包括String、Number和Boolean,阐述了在读取基本类型值时会自动创建对应的包装对象以便调用方法。通过示例展示了如何查找字符串中特定字符的位置以及如何根据位置返回字符。此外,还列举了多种字符串操作方法,如concat、substr、replace、split等,并给出了实际应用案例。
摘要由CSDN通过智能技术生成

JavaScript 中的对象分为3种:

  • 自定义对象,var obj = {}
  • 内置对象, Math, Date,Array、String等
  • 浏览器对象 BOM

前面两种对象是JS 基础 内容,属于 ECMAScript;

第三个浏览器对象BOM Web API 讲解

基本包装类型

  • 为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String、Number和 Boolean。

  • 每当读取一个基本类型值的时候,后台就会创建一个对应的基本的包装类型对象,可以使我们调用一些方法操作这些数据。

  • 基本包装类型就是把简单数据类型包装为复杂数据类型,这样基本数据类型就有了属性和方法

我们来看一个问题:

// 下面代码有什么问题?

var str = 'andy';

console.log(str.length);

按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为js 会把基本数据类型包装为引用数据类型,其执行过程如下 :

// 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;

 对于基本包装类型来说,只有处于“读取模式”的时候,后台才会自动创建相对应的对象,调用指定的方法之后,就立即销毁该对象了,这就意味着我们不能在运行的时为基本类型值添加属性和方法。

根据字符返回位置-indexOf()

与数组的indexOf()使用方法一致

// 字符串对象 根据字符返回位置 str.indexOf('要查找的字符', [起始的位置])

var str = '改革春风吹满地,春天来了';

console.log(str.indexOf('春'));

console.log(str.indexOf('春', 3)); // 从索引号是 3的位置开始往后查找

案例:查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数

//1.先查找第一个o出现的位置
//2.然后 只要indexOf 返回的结果不是 -1 就继续往后查找
//3.因为indexOf 只能查找到第一个,所以后面的查找,利用第二个参数,当前索引加1,从而继续查找
var str = "abcoefoxyozzopp";
  var index = str.indexOf('o');
  var num = 0;
  // console.log(index);
  while (index !== -1) {
      console.log(index);
      num++;
      index = str.indexOf('o', index + 1);
  }

  console.log('o出现的次数是: ' + num);

 根据位置返回字符

 // 根据位置返回字符

// 1. charAt(index) 根据位置返回字符

var str = 'andy'; console.log(str.charAt(3));

// 遍历所有的字符

for (var i = 0; i < str.length; i++) {

console.log(str.charAt(i));

}

// 2. charCodeAt(index) 返回相应索引号的字符ASCII值 目的: 判断用户按下了那个键

console.log(str.charCodeAt(0)); // 97

// 3. str[index] H5 新增的

console.log(str[0]); // a

案例:判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数

var str = 'abcoefoxyozzopp';

// 1. 制作字符字典
var o = {}; // {'a':1,'b':1,'c':1,'o':4,'e:'1,'f':1}
for (var i = 0; i < str.length; i++) {
    var chars = str.charAt(i); // chars 是 字符串的每一个字符 : a,b,c,o.....o
    // 判断chars中的字符,是否在o对象中
    // o[chars] 得到的是属性值 : 
    // 循环第一次:if(o['a']) --- 取出o对象中属性名叫做a的属性值 , 没有默认值为undefined
    //      if(undefined) : if小括号内有隐式转换---- false
    // 如果循环到第二个o,o['o'] --- 1  --- true ,o中有o属性,有的话值就++
    if (o[chars]) {
        o[chars]++; // o['o']=o['o']+1
    } else { // 代表当前o对象中没有chars存储的字符的属性  , o没有a属性
        o[chars] = 1; // 没有就添加一个a属性,并且给a添加值为1.----- o['a'] = 1
    }
}
console.log(o);

// 2. 遍历字典
var max = 0;
var ch = '';
for (var k in o) { // k='a' , k='o'
    // k 得到是 属性名
    // o[k] 得到的是属性值
    if (o[k] > max) { //  o['a'] > max  -- 1 > 0   ,  o['o']  > max  , 4 > 1
        max = o[k]; // max = 1  , max = 4
        ch = k; //     ch = 'a' , ch = 'o'
    }
}
console.log(max);
console.log('最多的字符是' + ch);

 字符串操作方法

// 字符串操作方法
// 1. concat('字符串1','字符串2'....)
     var str = 'andy'
     console.log(str.concat('+','baaby'));  //andy+baaby

// 2. substr('截取的起始位置', '截取几个字符');
      console.log(str.substr(0,2));
// 3. 替换字符 replace('被替换的字符', '替换为的字符')  它只会替换第一个字符
      var str = 'abdyabdyabdy'
      console.log(str.replace('a','c'));

      // 把所有的a 变为c
      while (str.indexOf('a') !==-1) {
            str = str.replace('a','c')
        }
        console.log(str);
// 4. 字符转换为数组 split('分隔符')    前面我们学过 join 把数组转换为字符串
        var str = 'pink-red-blue'
        var arr = str.split('-')
        console.log(arr);

        var str1 = '1+2+3+4'
        var arr1 = str1.split('+')
        console.log(arr1);

        var arr = [1,2,3,4]
        console.log(arr.join('-'));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值