字符串对象(js)

1、创建

// 1、字面量创建(推荐)(成对的单双引号引着的就是字符串)
var str1 = '花自飘零水自流';
console.log(str1);
console.log(typeof str1); // string

// 2、函数创建
var str2 = String('一种相思,两处闲愁');
console.log(str2);
console.log(typeof str2); // string


// 3、构造函数创建
var str3 = new String('我不一样');
console.log(str3);
console.log(typeof str3); // object

2、charAt

  • 格式:字符串.charCodeAt(下标);

  • 作用:返回对应下标字符的Unicode编码,值是 0 - 65535 之间的整数

var str = 'hello';
console.log(str.charAt(1)); // e
console.log(str[1]); // e  IE7及以下不支持

3、charCodeAt

  • 格式:字符串.charCodeAt(下标);

  • 作用:返回对应下标字符的Unicode编码,值是 0 - 65535 之间的整数

var str = '0123456789';
console.log(str.charCodeAt(0)); // 0--48
console.log(str.charCodeAt(str.length - 1)); // 9--57
var str2 = 'abcd...z';
console.log(str2.charCodeAt(0)); // a--97
console.log(str2.charCodeAt(str2.length - 1)); // z--122
var str3 = 'ABCD...Z';
console.log(str3.charCodeAt(0)); // A--65
console.log(str3.charCodeAt(str3.length - 1)); // Z--90
// ------------------------------------
console.log(('小').charCodeAt(0)); // 23567
console.log(('姐').charCodeAt(0)); // 22992
console.log(('姐').charCodeAt(0)); // 22992
​
console.log(String.fromCharCode(23567, 22992, 22992)); // 小姐姐
 

4、indexOf和lastIndexOf

主要作用:检查这个字符,在这个字符串中是否存在

  • 格式:字符串.indexOf(要查找的字符, [起始位置]);

  • 作用:查找字符在这个字符串中首次出现的位置,如果找不到,返回-1

  • 格式:字符串.lastIndexOf(要查找的字符, [起始位置]);

  • 从右向左查找

var str = 'abcdaaefg';
​
console.log(str.indexOf('a')); // 0
console.log(str.indexOf('cd')); // 2
console.log(str.indexOf('a', 1)); // 4
console.log(str.indexOf('a', 6)); // -1
// ---------------------------
console.log(str.lastIndexOf('a')); // 5
console.log(str.lastIndexOf('a', 3)); // 0
 

案例:字符串去重

var str = 'abcabc'; // 封装一个方法,用于去掉重复的字符,返回abc
console.log(fn(str)); // abc
​
​
function fn(str) {
    var newStr = ''; // 仓库,存储去重以后的字符串
for (var i = 0; i < str.length; i++) {
        // str[i]即每一个字符
        if (newStr.indexOf(str[i]) === -1) {
            // 如果返回-1,则证明仓库里面没有,没有则添加进来
            newStr += str[i];
        }
    }
    return newStr;
}
 

5、字符串截取

var str = 'abcdefg';
  • slice

// 字符串.slice(起始下标, 结束下标);  标准方法
console.log(str.slice()); // abcdefg   没有参数,返回全部
console.log(str.slice(2)); // cdefg   有一个参数,从第一个参数处起,一直到最后
console.log(str.slice(2, 6)); // cdef   有两个参数,从第一个参数处起,到第二个参数处止,不包括第二个参数
console.log(str.slice(6, 2)); // ''   第二个参数比第一个小(非负数),返回空字符串
console.log(str.slice(2, -2)); // cde   负数同长度相加
 
  • substring

// 字符串.substring(起始下标, 结束下标);
console.log(str.substring()); // abcdefg  没有参数,返回全部
console.log(str.substring(2)); // cdefg  有一个参数,从第一个参数处起,一直到最后
console.log(str.substring(2, 6)); // cdef  有两个参数,从第一个参数处起,到第二个参数处止,不包括第二个参数
console.log(str.substring(6, 2)); // cdef  第二个参数比第一个小(非负数),则两参数交换位置
console.log(str.substring(2, -2)); // ab  负数当作0
 
  • substr

// 字符串.substr(起始下标, 截取的个数);
console.log(str.substr()); // abcdefg   没有参数,返回全部
console.log(str.substr(2)); // cdefg   有一个参数,从第一个参数处起,一直到最后
console.log(str.substr(2, 2)); // cd   
console.log(str.substr(2, -2)); // ''   负数不截取
案例:结合moment.js,通过身份证号获取某个人的年龄

6、转大小写

  • 字符串.toUpperCase() 转大写

  • 字符串.toLowerCase() 转小写

只能针对英文

var str = 'abcde';
​
var s = str.toUpperCase(); // 转大写
console.log(s); // ABCDE
​
console.log(s.toLowerCase()); // abcde  转小写
 

7、拆分和拼接

  • split

    • 格式:字符串.split(参数)

    • 作用:将字符串以参数拆分成数组

var str = '2020-10-10';
var arr = str.split('-');
console.log(arr); // [ "2020", "10", "10" ]
​
console.log(str.split()); // [ "2020-10-10" ]
console.log(str.split('')); // [ "2", "0", "2", "0", "-", "1", "0", "-", "1", "0" ]
console.log(str.split('0')); // [ "2", "2", "-1", "-1", "" ]
 
  • join

    • 格式:数组.join(参数)

    • 作用:将数组用参数拼接成字符串

var arr = ["2020", "10", "10"];
console.log(arr.join('-')); // 2020-10-10
console.log(arr.join()); // 2020,10,10
console.log(arr.join('')); // 20201010
 

8、replace

  • 字符串.replace(被替换的字符, 新字符);

var str = '王小二说:老王是隔壁的';
var s = str.replace('王', '李');
console.log(s); // 李小二说:老王是隔壁的
 

9、trim

  • 字符串.trim() 去除字符串左右空格(IE8及以下不支持)(正则)

var str = '   小王说    ';
console.log(str);
console.log(str.trim());

 

原文地址:https://www.cnblogs.com/cyf666cool/p/13654746.html