JavaScript内置对象(二):String字符串

JavaScript内置对象(一):Array数组
JavaScript内置对象(三):Math算数
JavaScript内置对象(四):Date时间

字符串String

String 对象用于处理文本(字符串)。

创建字符串

  1. 使用Array构造函数,通过new关键字;例如:var str = new String();
  2. var str = 'I love red!';

属性

属性描述
constructor对创建该对象的函数的引用
length字符串的长度
prototype允许您向对象添加属性和方法
  1. str.length 获取字符串的长度,返回number。
  2. str.length-1 得到的是字符串中最后一个元素的索引值。

方法

字符串检索方法
  1. charAt():返回在指定位置的字符。
var str = 'I love red!';
document.write(str.charAt(3)); //o

在字符串中使用[ ]取,如果索引值越界得到undefined,使用charAt超过字符串的索引值返回" "

  1. charCodeAt():返回在指定的位置的字符的 Unicode 编码。
  2. indexOf():从一个字符串中搜索给定的子字符串,返回子字符串首次出现的位置;返回数值。如果在该字符串中没有这字符返回-1。
var str = 'I love red!';
console.log(str.indexOf('e'));//5
  1. lastIndexOf():从一个字符串中搜索给定的子字符串,返回子字符串最后一次出现的位置;返回数值。如果在该字符串中没有这字符返回-1。
var str = 'I love red!';
console.log(str.indexOf('e'));//8
  1. includes():如果当前字符串包含被搜寻的字符串,就返回 true;否则返回 false。
var str = 'I love red!';
console.log(str.includes('h')); //false
  1. startsWith():判断字符串是否以某个字符开头,返回布尔值。
var str = 'hello world!';
console.log(str.startsWith('hello'));//true
  1. endsWith():判断字符串是否以某个字符结尾,返回布尔值。
var str = 'hello world!';
console.log(str.endsWith('!'));//true
字符串截取方法
  1. slice(start,end):提取字符串的片断,并在新的字符串中返回被提取的部分。
  2. substring(start,end):提取字符串中两个指定的索引号之间的字符。
  3. substr(start,len):从起始索引号提取字符串中指定数目的字符。

两种记法:

第一种记忆方法
★单个参数: 从指定的位置开始截取,一直到字符串的结尾处
1.正数 从指定位置开始截取,一直到字符串的结尾处
2.负数 表示从字符串的结尾处向前截取n个字符
3.substring 单个参数小于0的数字当做0处理,不支持负数
★两个参数
slice 参数1:开始位置,参数2:结束位置(截取的时候不包含结束位置)。
substring 参数1:开始位置,参数2:结束位置(截取的时候不包含结束位置)。
substr 参数1:开始位置,参数2:截取的长度。

第二种记忆方法
1.slice 参数1(必需):开始位置,参数2(可选):结束位置(截取的时候不包含结束位置)。
当参数为负数时,会将传入的负值与字符串的长度相加。
2.substring 参数1:开始位置,参数2:结束位置(截取的时候不包含结束位置)。
语法和功能同slice();
区别:当参数为负值时,自动将参数转换为0;
substring()会将较小的数作为开始位置,将较大的数作为结束位置
3.substr 参数1(必需):开始位置,参数2(可选):截取的长度,省略时截取至字符串末尾。
当start为负数时,会将传入的负值与字符串的长度相加。
当len为负数时,返回空字符串。

字符串对象的方法
  1. split(separator,limit):把一个字符串分割成字符串数组,返回数组。limit参数可指定返回的数组的最大长度。
var str = 'I love red!';
console.log(str.split(' ')); //I,love,red!
console.log(str.split('')); //I,l,o,v,e,r,e,d,!
console.log(str.split(" ",2)); //I,love
  1. replace(regexp/substr,replacement):在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。返回字符串。

replace不会改变原字符串

var tel = "010-62971268,400-100-9098,010-86789889";
var newTel = tel.replace(","," ";);
console.log(tel); //010-62971268,400-100-9098,010-86789889
console.log(newTel); //010-62971268 400-100-9098 010-86789889
字符串转换大小写的方法
  1. toUpperCase():把字符串转换为大写。返回字符串。
  2. toLowerCase():把字符串转换为小写。返回字符串。
var str = 'hello wOrld!';
//把字符串全部转为大写
console.log(str.toUpperCase()); //HELLO WORLD!
//把字符串全部转为小写
console.log(str.toLowerCase()); //hello world!
其他方法
  1. concat():拼接两个字符串,返回一个新的字符串。(不会改变原字符串)
var str = 'hello world!';
var newStr = str.concat('I love red!');
console.log(str); //hello world!
console.log(newStr); //hello world!I love red!

2.trim():删除字符串两端的空白符,对字符串中间的空格不影响

var str = '   hel   lo   ';
console.log(str.trim()); //hel   lo

案例

去除字符串中所有空格

    var str = '   hel   lo   ';
    //方法1
    var res;
    for(var i = 0;i < str.length;i++){
        if (i == 0) {
            res = str.replace(' ','');
        } else {
            res = res.replace(' ','');
        }
    }
    console.log('res='+res+'-');
    console.log('str='+str);
    //方法2
    for(var i = 0;i < str.length;i++){
        if (str.includes(' ')) {
            str = str.replace(' ','');
            i--;
        }
    }
    console.log('str='+str);

字符串去重

 	var str = "dcccbaaaaaabbbaa";
    //方法1
    var newStr = [];
    for (var i = 0; i < str.length; i++) {
        if (newStr.indexOf(str[i]) == -1) {
            newStr[newStr.length] = str[i];
        }
    }
    console.log(newStr);
    //方法2
    var arr = str.split("");
    for(var i = 0;i < arr.length;i++){
        for(var j = i + 1;j < arr.length;j++){
            if(arr[i] == arr[j]){
                arr.splice(j,1);
                j--;
            }
        }
    }
    console.log(arr);
    //方法3
    var num = 0; 
    var res = '';
    for (var i = 0; i < str.length; i++) {
        if (res.indexOf(str.charAt(i)) === -1) {
            res += str.charAt(i);
        }
    }
    console.log(res);
    //方法4
    var newStr = '';
    for (var a = 0; a < str.length; a++) {
        if (newStr.indexOf(str[a]) == -1) {
            newStr = newStr.concat(str[a]);
        }
    }
    console.log(newStr);

统计一个字符串中出现次数最多的字母是什么

	var str = "dcccbaaaaaabbbaa"; 
	//方法1
    function num (str){
        var a = [];
        var b = str.split("");
        for (var i = 0; i < b.length; i++) {
            if (a.indexOf(b[i]) == -1) {
                a[a.length] = b[i];
            }
        }
        console.log(a);
        var newArr = new Array(a.length); 
        for (var i = 0;i < a.length;i++) {
            newArr[i] = 0;
            for (var j = 0; j < b.length;j++) {
                if (b[j] == a[i] && a[i]!=' ') {
                    newArr[i]++;
                }
            }
        } 
        console.log(newArr);
        var indexOfMax = 0;
        var tempMax = newArr[0];
        for(var i = 0; i < newArr.length; i ++){
            if(newArr[i] > tempMax){
                tempMax = newArr[i];
                indexOfMax = i;
            }
        }
        return a[indexOfMax];
    }
    document.write(num(str)+'出现的次数最多');
    //方法2
    var arr = str.split("");
    arr = arr.sort();
    var n = 1;
    var arr1 = [];    
    var maxmore = '';
    for(var i = 0;i < arr.length;i++){
        if(arr[i] == arr[i+1] && n > arr1.length-1){
            maxmore = arr[i];
            n++;
        }
        else{
            arr1[n] = maxmore;
            n = 1;
        }
    }
    console.log('最多的字母'+maxmore);
    console.log('最多的字母次数'+ (arr1.length-1));
    //方法3
    var num = 0;
    var arr;
    for(var i = 0;i < str.length;i++){
        if(str.split(str.charAt(i)).length > num && str.charAt(i) != ' '){
            arr = str.charAt(i);
            num = str.split(str.charAt(i)).length;
        }        
    }
    console.log(arr);
    //方法4
    var obj = {};
    for (var i = 0; i < str.length; i++) {
        var char = str[i];
        if(obj[char]){
            obj[char]++;
        }else{
            obj[char] = 1;
        }
    }
    // console.dir(obj);
    var max = 0;
    var char;
    for (var key in obj) {
        var num = obj[key]
        if (num > max) {
            char = key;
            max = num;
        }
    }
    console.log("出现次数最多的字符是:"+char+",出现次数"+max);

统计一个字符串中字母a出现了多少次

var str = "learning how to use a computer and learning how to program one are two distinct activities.";
// 方法1
var count = 0;
for(var i = 0;i < str.length;i++){
    if(str.includes("a")){
        count++;
        str = str.replace("a","A");
    }
}
console.log(count);
//方法2
var newStr = [];
var j = 0;
for (var i in str) {
    if (str[i] == 'a') {
        newStr[j++] = str[i];
    }
}
console.log(newStr.length);
//方法3
var arr = str.split('a');
console.log(arr.length-1);

其他参考材料

W3C JavaScript String 对象

菜鸟教程 JavaScript 字符串(String) 对象

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值