资讯专栏INFORMATION COLUMN

js中字符串操作

tunny / 2709人阅读

摘要:字符串包装类型和字符串的不可变性包装类型包装类型简单数据类型对应的复杂形势包装类型简单类型包装类型自定义属性获取属性值简单数据类型不可以自定义属性简单数据类型不可以自定义属性简单数据类型有属性字符串的不可变性字符串一旦定义就不会被修改想要修

字符串API 包装类型和字符串的不可变性

1.包装类型

包装类型:简单数据类型对应的复杂形势!

  //包装类型:String/Number/Boolean;
    //简单类型:string/number/boolean/undefined/null;
    
    //1.包装类型;
      var obj = new Object();
      obj.aaa = 111;//自定义属性
      console.log(obj.aaa);// 111 获取属性值
    
      //number:简单数据类型不可以自定义属性
      var num = 111;
      num.bbb = 222;
      console.log(num.bbb);// undefined 简单数据类型不可以自定义属性;
    
      //简单数据类型有属性!!!
      var str = "abc";
      console.log(str.length); // 3

2.字符串的不可变性

(字符串一旦定义就不会被修改,想要修改重新开辟空间)

根据索引查字符 1.charAt( )
//1.字符串.charAt(索引值);    字符串中对应索引值的字符。
//兼容性很棒;
例:
    var str = "0Aabcd我&";
    console.log(str.charAt(1));// A
    console.log(str.charAt(3));// b
    console.log(str.charAt(str.length-2)); // 我
    console.log(str.charAt(str.length-1)); // &
2.字符串[索引值]
// 用法 str[0]
字符串[索引值] // 和数组一样;但是兼容性不好;H5新增,ie678不支持; 用法和charAt一样
例:
    var str = "0Aabcd我&";
    console.log(str[1]); // A
    console.log(str[3]); // b
    console.log(str[str.length-2]); // 我
    console.log(str[str.length-1]); // &
3.字符串.charCodeAt(索引值)
字符串.charCodeAt(索引值); // 给索引,查对应的Unicode编码;
console.log(str.charCodeAt(0)); // 48
console.log(str.charCodeAt(1)); // 65
console.log(str.charCodeAt(2)); // 97
根据字符查索引 1.indexOf( )
例:
    //indexOf(); 给字符查索引(从前往后)
    var str = "abcdcbb";
    console.log(str.indexOf("a"));// 0
    console.log(str.indexOf("b"));// 1
    console.log(str.indexOf("xxx"));//查不到返回 -1
    //查多个字符
    console.log(str.indexOf("abc"));// 0 以首个单词字符为准; 
    console.log(str.indexOf("ac")); // 不完整或者顺序不对都是-1;
    console.log(str.indexOf("acb"));// 不完整或者顺序不对都是-1;
2.lastIndexOf()
lastIndexOf();   // 给字符查索引(从后往前)
//同理indexOf;
//字符串一旦声明,索引值就固定了,无论从前往后,还是从后往前,索引值都是固定的
var str = "abcdcbb";
console.log(str.lastIndexOf("b"));//6
字符串连接和截取 concat( )
// 拼接字符串  (拼接字符串更喜欢直接用 + )
var str1 = "123";
var str2 = "abc";
console.log(str1.concat(str2)); // 123abc

//拼接数组
var arr1 = [11,22,33];
var arr2 = [44,55,66];
console.log(arr1.concat(arr2)); // [1, 12, 33, 44, 55, 66]
slice( )
var str = "123abc";
slice() //从start位置开始,截取到end位置,end取不到
//和数组的完全一样: 字符串.slice(开始索引值,结束索引值);
console.log(str3.slice(3));        //从索引值为3的元素截取到最后  abc
console.log(str3.slice(0,3));    //包左不包右 123
console.log(str3.slice(-2));    //从后面截取两个 bc
console.log(str3.slice(3,0));    s//前面一个数大,后面的数小;  返回 "";
substr( )
var str = "123abc";
substr()       //开始索引值,截取几个;
console.log(str3.substr(3));    //从索引值为3的元素截取到最后 abc
console.log(str3.substr(2,1));    //从索引值为2的往后截取一个 3
console.log(str3.substr(-2));    //从后面截取两个 bc
//前后不一样大没问题,因为第二个参数是截取几个的意思;
substring( )
var str = "123abc";
substring()     //开始索引值,结束索引值;
//和slice();同样
console.log(str3.substring(3));        //从索引值为3的元素截取到最后  abc
console.log(str3.substring(0,3));    //包左不包右 123
//不同:
console.log(str3.substring(-2));    //全部截取 123abc
console.log(str3.substring(3,4));    //智能调换  a (截取索引为3的第四个字符)
console.log(str3.substring(3,5));    //智能调换  ab (从索引为3的开始截取到第5个字符)
字符串大小写转换
str.toLowerCase();  // 英文字符转换成小写;
str.toUpperCase();  // 英文字符转换成大写;
//上传文件的时候用;   因为后缀名,不区分大小写;
trim( ) 去除字符串前后空白 search( ) 给字符查索引 replace( ) 替换
var str = "Today is a good day, today is a good day.";
//无法忽略大小写,而且只能替换一个  Tomorrow is a good day, today is a good day.
console.log(str.replace("Today","Tomorrow"));    
//g: 全局替换;   i: 忽略大小写!   Tomorrow is a good day, Tomorrow is a good day.
console.log(str.replace(/today/ig,"Tomorrow")); 
split( ) 字符串转化成数组
// split() 和 join() 是一对!
var str = "aaa|bbb|ccc";    //字符串会根据参数被分割成几部分;变成一个数组;
console.log(str.split("|"));// ["aaa", "bbb", "ccc"] 按 | 进行分割 , 参数不会出现在数组中;
console.log(str.split());    // ["aaa|bbb|ccc"] 不带参数,整体作为一个元素;
console.log(str.split(""));    // ["a", "a", "a", "|", "b", "b", "b", "|", "c", "c", "c"] 每一个字符都算一个元素;
字符串案例

1.判断一个字符串中出现次数最多的字符,统计这个次数

    var str = "abcoefoxyozzopp";
//  a:1,b:1,c:1......   键值对;    对象或者json记录;
//    思路:遍历字符串中的每一个元素,从json/对象中查找.
//    判断:有的话,值自增1;没有的话,设置该属性,值为1;
    var json = {};//将来往里面装属性和值;{属性就是字符串中的元素,值就是出现的次数}
    //for循环遍历
    for(var i=0;i

2.获取url中?后面的内容,并转化成对象的形式。例如:http://www.itaaaaa.com/login?...

    var str = "http://wwwaitaaaaa.com/login?name=zs&age=18&a=1&b=2";
    //思路:找到?,然后截取到最末尾;把字符串按照&分割;可以再次按照=分割,然后创建对象
    var index = str.lastIndexOf("?");
    console.log(index); // 28
    var str2 = str.slice(index+1);
    console.log(str2); // name=zs&age=18&a=1&b=2
    //以&符号分割转换成数组;
    var arr = str2.split("&");
       console.log(arr); // ["name=zs", "age=18", "a=1", "b=2"]

    var obj = new Object();
    //for循环把数组中的每一个元素都遍历出来,然后前面的做属性,后面的做值;
    for(var i=0;i           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90171.html

相关文章

  • JS性能优化笔记

    摘要:四如果需要遍历数组,应该先缓存数组长度,将数组长度放入局部变量中,避免多次查询数组长度。五尽量选用局部变量而不是全局变量。所以如果这样的表达式重复出现,只要可能,应该尽量少出现这样的表达式,可以利用局部变量,把它放入一个临时的地方进行查询。 通过网上查找资料了解关于性能优化方面的内容,现简单整理,仅供大家在优化的过程中参考使用,如有什么问题请及时提出,再做出相应的补充修改。 一、 让...

    baoxl 评论0 收藏0
  • JS基础知识学习(一)

    摘要:基础知识前端开发常用的浏览器谷歌浏览器内核引擎火狐浏览器内核欧朋浏览器内核浏览器内核浏览器内核作为前端开发,我们会使用编写代码,编写代码的时候要遵循一些规范浏览器开发商开发的浏览器,目的就是为了按照的规范,识别出开发者编写的代码,并且在页面 JS基础知识 前端开发常用的浏览器 谷歌浏览器(chrome):Webkit内核(v8引擎) 火狐浏览器(firefox):Gecko内核 欧朋...

    xinhaip 评论0 收藏0
  • Node.js学习之路14——Process进程

    摘要:在中,只支持单线程。在这种场合下,如果能够使用多进程,则可以为每个请求分配一个进程,从而可以更好地使用服务器端的资源。进程进程对象的属性用于运行应用程序的可执行文件的绝对路径的版本号及其各依赖的版本号当前运行的平台用于读入标准输入流的对象。 Process 在Node.js中,只支持单线程。但是在应用程序中,如果只使用单线程进行操作,从接收请求开始到返回响应为止的这段时间内可能存在很长...

    darry 评论0 收藏0
  • 【读书笔记】《高性能JavaScript》

    摘要:性能访问字面量和局部变量的速度是最快的,访问数组和对象成员相对较慢变量标识符解析过程搜索执行环境的作用域链,查找同名标识符。建议将全局变量存储到局部变量,加快读写速度。优化建议将常用的跨作用域变量存储到局部变量,然后直接访问局部变量。 缺陷 这本书是2010年出版的,这本书谈性能是有时效性的,现在马上就2018年了,这几年前端发展的速度是飞快的,书里面还有一些内容考虑IE6、7、8的东...

    chengjianhua 评论0 收藏0
  • 前端知识点总结——JS基础

    摘要:语法常量名值常量名在程序中,通常采用大写形式。结果为类型作用表示使用的数据不存在类型只有一个值即当声明的变量未赋值未初始化时,该变量的默认值就是类型用于表示不存在的对象。结果为按位或,对小数取整将任意小数与做按位或,结果则取整数部分。 前端知识点总结——JS基础 1.javascript概述(了解) 1.什么是javascript javascript简称为js,是一种运行于js解释器...

    wangbjun 评论0 收藏0
  • Node.js 的缓冲区(Buffer)究竟是什么?

    摘要:在创建时大小已经被确定且是无法调整的,在内存分配这块是由层面提供而不是具体后面会讲解。在这里不知道你是否认为这是很简单的但是上面提到的一些关键词二进制流缓冲区,这些又都是什么呢下面尝试做一些简单的介绍。 showImg(https://segmentfault.com/img/remote/1460000019894717?w=1280&h=850); 多数人都拥有自己不了解的能力和机...

    scwang90 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<