javascript 内置对象字符串总结及案例

简介: js中对字符串的处理也是很常见的,今天总结一下。

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛。
  • 💬格言:迄今所有人生都大写着失败,但不妨碍我继续向前!🔥

@TOC

前言

js中对字符串的处理也是很常见的,今天总结一下。

字符串的不可变性

指的是字符串里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
// 字符串的不可变性
    var str = '123';
    console.log(str);
    str = '456';
    console.log(str);

像上面这段代码,当重新给str赋值时,常量'123'不会被修改,依然在内存中,重新给字符串赋值时,会重新在内存中开辟空间,这就是字符串的不可变。
在这里插入图片描述

注:由于我们字符串的不可变性,所以不要大量拼接字符串,会有效率问题。

例如像下面这段代码:

    var str = '';
    for (var i=0;i<100000;i++){
        str += i;
    }
    console.log(str); //这个结果需要花费大量时间来显示,因为需要不断开辟新的空间。
这个结果需要花费大量时间来显示,因为需要不断开辟新的空间。

根据字符返回位置

字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。
方法名 说明
indexOf (’要查找的字符,[开始的位置] 返回指定字符在元字符串中的位置,如果找不到就返回-1,开始的位置是index 索引号,从前往后找,只找第一个匹配的。
lastlndexOf (’要查找的字符') 从后往前找,只找第一个匹配的。
//字符串对象,更具字符返回位置  str.indexOf('要查找的字符',[起始的位置])
    var str = '我是阿牛,但真的一点都不牛!';
    console.log(str.indexOf('牛'));  //从前往后找,只找第一个匹配的
    console.log(str.indexOf('牛',4)); //从索引号是4的位置开始往后查找
    console.log(str.lastIndexOf('牛')); //从后往前找,只找第一个匹配的

在这里插入图片描述

案例-求某个字符在字符串中出现的位置及次数

题目:统计字符串'ompfsroofdovoh'中o出现的位置及次数

核心算法:
1.先查找第一个 o 出现的位置。
2.然后只要 indexOf 返回的结果不是-1就继续往后查找。
3.因为 indexOf 只能査找到第一个,所以后面的查找,利用二个参数,当前字母o的索引加1,从而继续查找。

//统计字符串'ompfsroofdovoh'中o出现的位置及次数
    var str = 'ompfsfroofddosvoh';
    var index = str.indexOf('o'); //返回第一个字符‘o’的索引
    var num = 0;
    while (index!=-1){
        console.log(index);
        num++;
        index = str.indexOf('o',index+1);  //从上一个字符‘o’的下一个字符开始查找
    }
    console.log('num:' + num);

在这里插入图片描述

根据位置返回字符(重点)

方法名 说明 使用
charAt ( index ) 返回指定位置的字符( index 字符串的索引号) str.charAt ( )
charCodeAt ( index ) 获取指定位置处字符的 ASCI 码( index 索引号) str.charCodeAt ( )
str [ index ] 获取指定位置处字符 HТML5,IE8+支持和 charAt ( )等效
// 根据位置返回字符
    var str = 'aniu';
    console.log(str.charAt(3));
    console.log(str.charCodeAt(0)); //97
    console.log(str[3]);

在这里插入图片描述

案例-统计一个字符串中出现的最多的字符以及次数

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

核心算法:
1.利用 charAt ()遍历这个字符串。
2.把每个字符都存储给对象,如果对象没有该属性,就为1,如果存在了就+1。
3.遍历对象,得到最大值和该字符。

// 统计一个字符串中出现的最多的字符以及次数;
    var str = 'ompfsfroofddosvoh';
    var obj = {};
    for (var i=0;i<str.length;i++){
        var chars = str.charAt(i);
        if (obj[chars]){
            obj[chars]++;
        }else{
            obj[chars] = 1;
        }
    }
    console.log(obj);
    var max = 0;
    var ch = '';
    for (var i in obj){
        if(obj[i]>max){
            max = obj[i];
            ch = i;
        }
    }
    console.log('出现最多的字符是:'+ ch +' 出现了' + max + '次');

在这里插入图片描述

字符串操作方法(重点)

方法名 说明
concat (str1,str2,str3.) concat 方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用
substr ( start , length ) 从 start 位置开始(索引号), length 取的个数,重点记住这个
slice ( start , end ) 从 start 位置开始,截取到 end 位置, end 取不到(他们俩都是索引号)
substring ( start , end ) 从 start 位置开始,截取到 end 位置, end 取不到,基本和 slice 相同,但是不接受负值
//字符串操作方法
    // 1.concat()
    var str = 'aniu';
    str.concat('zui','bang');
    console.log(str);
    //2.substr('截取起始位置','截取几个字符')
    var str1 = '我是阿牛!';
    console.log(str1.substr(2,2));
    //3.slice('截取起始位置','取不到的截取结束位置')
    console.log(str1.slice(2,4));
    //4.substring('截取起始位置','截取几个字符')
    console.log(str1.substring(2,4));

在这里插入图片描述

字符串的替换、转换为数组

// 字符串的替换和切割
// 1.替换字符 replace('被替换的字符','替换为的字符');  一次只能替换一个
var str = 'aniu';
console.log(str.replace('a','x'));
// 将字符串qqqwsdakahsd里的q替换为*
var str1 = 'qqqwsdakahsd';
while(str1.indexOf(q) != -1){
    str1 = atr1.replace('q','*');
}
console.log(str1);

// 2.字符转换为数组
var str2 = '13/14/520/love/you';
console.log(str2.split('/'));

在这里插入图片描述

结语

陆陆续续写了很多前端基础知识和小demo了,这些对初学者都很有用,赶紧关注一手学习吧!

相关文章
|
2月前
|
JavaScript 前端开发
JS几种拼接字符串的方法
JS几种拼接字符串的方法
56 1
|
4月前
|
存储 JavaScript 前端开发
JS上传文件(base64字符串和二进制文件流)
这篇文章介绍了两种JavaScript文件上传的方法:使用FileReader对象将文件读取为base64字符串上传,以及使用FormData对象以二进制文件流的形式上传文件,包括如何处理文件选择、读取和上传的详细代码示例。
528 2
JS上传文件(base64字符串和二进制文件流)
|
3月前
|
JavaScript
js 解析 byte数组 成字符串
js 解析 byte数组 成字符串
91 5
|
4月前
|
数据采集 Web App开发 JavaScript
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
|
1月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
1月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
26 2
|
2月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
48 3
|
3月前
|
JavaScript 前端开发
javascript创建字符串
javascript创建字符串
|
3月前
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
3月前
|
存储 JavaScript
js切割截取字符串方法
js切割截取字符串方法
61 2