zoukankan      html  css  js  c++  java
  • JavaScript 字符串对象

    1.字符串的不可变

    指的是已经存在的值,看似可以被改变,其实只是变量指向的地址改变了,内存中新开辟了一个内存空间,原来的值并未被抹去。

    var str='pink';

     str='red';

    首先,内存中开辟了一个内存空间用来存放pink,str指向这个内存地址,当执行到第二句时,内存中开辟了一个新的空间用来存放red,str指向这个新的内存空间,用来存放pink的空间仍然存在,pink也并没有没抹去。

    因此,编写代码时尽量不要多次对字符串重新赋值或拼接,会占用很多内存资源

    2字符串对象

    根据字符串返回位置

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

    方法名 说明
    indexOf('要查找的字符',开始的位置) 返回指定内容在源字符串中的位置,找不到返回-1,开始的位置是index索引号
    lastIndexOf() 从后往前找,只找第一个匹配的

    indexOf()中开始的位置可不写,会默认从索引号为0的位置开始查找,遇到目标字符即返回索引号。当然lastIndexOf()中也可以添加开始查找的位置。

    案例:

    查找字符串中某元素出现的次数以及位置。

    ①:核心算法:先查找第一个核心元素出现的位置

    ②:如果indexOf()返回的值不是-1则继续往后

    ③:后面的查找,利用indexOf()的第二个参数,当前索引加1,继续查找

     var str='天意让我遇见今生的你天';
                var index=str.indexOf('');
                var number=0;
                while(index!==-1){
                    console.log(index);
                    index=str.indexOf('',index+1);
                    number++;
                }
                console.log(number);

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

    方法名 说明 使用
    charAt(index) 返回指定位置的字符 str.charAt(0)
    charCodeAt(index) 获取指定位置处字符的ASCII码 str.charCodeAt(0)
    str[index] 获取指定位置处字符 HTML5,IE8+支持和charAt()等效

    charCodeAt()实际开发中使用它的目的:判断用户按下了哪个键,比如返回值为65,即可知用户按下了A键,可用于在游戏中按动某键来实现移动或其它功能的

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

    ①核心算法:利用charAt()遍历这个字符串

    ②把每个字符都存储给1对象,如果对象里没有该属性,则创建该属性且值为1,若有则属性值加1

    ③遍历对象,得到最大值和该字符

    var str="aboodegotooforo";
               var o={};
               for(var i=0;i<str.length;i++){
                   var chars=str.charAt(i);
                   if(o[chars])
                    o[chars]++;
                    else
                    o[chars]=1;
               }
               var max=0;
               var ch='';
               for(var k in o){
                   if(o[k]>max){
                       max=o[k];
                       ch=k;
                   }
               }
               console.log(max);
               console.log(ch);

    拼接以及截取字符串

    方法名 说明
    concat(str1,str2,str3..) 用来拼接两个或多个字符串,等效于+,+更常用
    substr(start,length) 从start位置开始,length为取得个数
    slice(start,end) 从start位置开始,截取到end,end取不到
    substring(start,end)

    从start位置开始,截取到end,end取不到,基本与

    slice相同,但是不接受负值

     var str="pink";
               console.log(str.concat('red'));
               var str1='天意让我遇见今生的你';
               console.log(str1.substr(2,2));

    替换字符串

    replace(’被替换的字符‘,’替换为的字符‘)

     var str="ababab"
              console.log(str.replace('a','b'));
              //将字符串中的a全部替换
              while(str.indexOf('a')!==-1){
                  str=str.replace('a','b');
              }
              console.log(str);


    将字符串中的指定字符替换的另一种方法

    var str = 'abcadeacf'; 
    var str1 = str.replace('a', 'o'); 
    alert(str1); // 打印结果: obcadeacf 
    var str2 = str.replace(/a/g, 'o'); 
    alert(str2); //打印结果: obcodeocf,

    注意:此处的replace的第一个参数为正则表达式,/g是全文匹配标识

    字符转换为数组

    spilt('分隔符')//spilt()中的分隔符取决于字符串中的连接方式,如下:

    var str='pink,green';
             console.log(str.split(','));
             var str1='pink&green'
             console.log(str1.split('&'));

    toUpperCase()//转换大写

    toLowerCase()//转换小写

  • 相关阅读:
    【js效果】密码的显示和隐藏
    【js效果】竖向折叠二级菜单
    【js效果】单行文字滚动(从左到右)
    mysql:查询排名
    init_bootmem_node
    bootmem_init_node
    for_each_node(node)
    build_mem_type_table
    __vet_atags
    asm-offset.h 生成
  • 原文地址:https://www.cnblogs.com/echol/p/12482223.html
Copyright © 2011-2022 走看看