发表于: 2020-04-10 23:40:48

1 1639


今天完成的事情:今天尝试了js字符串的提取,去重,判断字符的出现的次数等
明天计划的事情:继续尝试自己写一些简单的程序验证之前学的的熟练度
遇到的问题:实际操作太少每次都需要回顾一下还是要多实际练习熟练一下
收获:今天尝试了几种操作字符串的方法

查询子字符串

判断字符串内是否包含子串,不少开发者会使用for循环来判断,而忘记了JavaScript提供子串函数:

indexOf(),该Of() 方法对大小写敏感。返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。() 方法返回介于两个给定元素之间的所有祖先元素。

<!DOCTYPE html>
<html lang="en">

<head>   
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title> 
  <script>
    var mystr = "Hello world!";
    var index = mystr.indexOf("llo");    //2
    var index1 = mystr.indexOf("l");    //2
    var index2 = mystr.indexOf("l"3);    //3
    console.log(index);
    console.log(index1);
    console.log(index2);
    
  </script>
  </body>

</html>

运行结果


返回指定位置的字符或其字符编码值

查找给定位置的字符,可以使用如下函数:

<!DOCTYPE html>
<html lang="en">

<head>   
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title> 
  <script>
    var mystr = "Hello World!";
    var index = mystr.charAt(7);    //o
    console.log(index);

  </script>
  </body>

</html>

运行结果

字符串连接

可以将两个或多个字符串进行加法操作,同时可以使用JavaScript提供的concat函数:

<!DOCTYPE html>
<html lang="en">

<head>   
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title> 
  <script>
    var mystr1 = "Hello";
    var mystr2 = " world,";
    var mystr3 = "Hello";
    var mystr4 = "guoxiansheng";
    var newStr = mystr1.concat(mystr2 + mystr3 + " " + mystr4);    //Hello world,Hello guoxiansheng
    console.log(newStr);

  </script>
  </body>

</html>

运行结果

字符串切割和提取

有三种可以从字符串中抽取和切割的方法:

第一种,slice()函数:

<!DOCTYPE html>
<html lang="en">

<head>   
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title> 
  <script>
    var mystr = "hello world!";
    var sliceStr1 = mystr.slice(-3);    //ld!
    var sliceStr2 = mystr.slice(-3, -1);    //ld
    var sliceStr3 = mystr.slice(3);    //lo world!
    var sliceStr4 = mystr.slice(37);    //lo w
    console.log(sliceStr1);
    console.log(sliceStr2);
    console.log(sliceStr3);
    console.log(sliceStr4);

  </script>
  </body>

</html>

运行结果

第二种:substring()函数:

<!DOCTYPE html>
<html lang="en">

<head>   
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title> 
  <script>
    var mystr = "hello world!";
    var sliceStr1 = mystr.substring(3);    //lo world!
    var sliceStr2 = mystr.substring(37);    //lo w
    console.log(sliceStr1);
    console.log(sliceStr2);

  </script>
  </body>

</html>

运行结果

第三种:substr()函数:

<!DOCTYPE html>
<html lang="en">

<head>   
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title> 
  <script>
    var mystr = "hello world!";
    var sliceStr1 = mystr.substr(3);    //lo world!
    var sliceStr2 = mystr.substr(37);    //lo wo
    console.log(sliceStr1);
    console.log(sliceStr2);

  </script>
  </body>

</html>

运行结果

1.slice() 可以为负数,如果起始位置为负数,则从字符串最后一位向前找对应位数并且向后取结束位置,如果为正整数则从前往后取起始位置到结束位置。

2.substring()只能非负整数,截取起始结束位置同slice()函数一致。

3.substr()与第一、第二种函数不同,从起始位置开始截取,结束位置为第二个参数截取的字符串最大长度。

以上三种函数未填第二参数时,自动截取起始位置到字符串末尾。

字符串去重

<!DOCTYPE html>
<html lang="en">

<head>   
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title> 
  <script>
    var str = "aahhgggsssjjj";
    function removeRepeat(msg) {
      var res = [];
      var arr = msg.split("");
      for (var i = 0i < arr.lengthi++) {
        if (res.indexOf(arr[i]) == -1) {
          res.push(arr[i]);
        }
      }
      return res.join("");
    }
    removeRepeat(str);    //ahgsj
    console.log(removeRepeat(str));
    
  </script>
  </body>

</html>

运行结果

判断字符串中字符出现的次数

<!DOCTYPE html>
<html lang="en">

<head>   
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title> 
  <script>
    /*  
    1.先实现字符串去重  
    2.然后对去重后的数组用for循环操作,分别与原始数组中各个值进行比较,如果相等则count++,循环结束将count保存在sum数组中,然后将count重置为0  
    3.这样一来去重后的数组中的元素在原数组中出现的次数与sum数组中的元素是一一对应的  
*/
    var str = "aacccbbeeeddd";
    var sum = [];
    var res = [];
    var count = 0;
    var arr = str.split("");
    for (var i = 0i < arr.lengthi++) {
      if (res.indexOf(arr[i]) == -1) {
        res.push(arr[i]);
      }
    }
    for (var i = 0i < res.lengthi++) {
      for (var j = 0j < arr.lengthj++) {
        if (arr[j] == res[i]) {
          count++;
        }
      }
      sum.push(count);
      count = 0;
    }
    console.log(res);    //["a", "c", "b", "e", "d"]  
    for (var i = 0i < res.lengthi++) {
      var str = (sum[i] % 2 == 0) ? "偶数" : "奇数";
      console.log(res[i] + "出现了" + sum[i] + "次");
      console.log(res[i] + "出现了" + str + "次");
    }
  </script>
  </body>

</html>

运行结果

剩下的明天再继续


返回列表 返回列表
评论

    分享到