首页 > 代码库 > 关于字符串的一些操作

关于字符串的一些操作

1、查询字符串中出现最多的字符和个数的算法。例如字符串“abaaas”出现最多的是a,出现4次,算法js描述

//第一种思路:借助json格式来实现    function getMore(str) {        var result = {};        var num = 0;        var valuehttp://www.mamicode.com/= "";        //将字符串以json格式存储到result中,并统计其个数        for (var i = 0; i < str.length; i++) {            if (!result[str[i]]) {//判断json对象中有没有该属性,没有则添加                result[str[i]] = 1;            } else {//若json中有该属性,则将其值+1                result[str[i]]++;            }        }        //通过遍历result寻找出现次数最多的字符        for (var attr in result) {//            if (num < result[attr]) {                num = result[attr];                value = attr;            }        }        return "出现最多的字符是:" + value + ",出现了" + num + "次.";    }    //第二种思路:对字符串先进行排序,然后再利用正则进行匹配,使用replace方法的回调函数    function getMore(str) {        var arr = str.split("");        var num = 0, valuehttp://www.mamicode.com/= "";        arr.sort();        str = arr.join("");        var reg = /(\w)\1+/g;//\1代表与前面子项相同        str.replace(reg, function ($0, $1) {            if (num < $0.length) {                num = $0.length;                value = $1;            }        });        return "出现最多的字符是:" + value + ",出现了" + num + "次.";    }

 2、将字符串转为千分制?例如将‘1234567’转为1,234,567

/思路:千分制每三位一组,所以先让字符串长度对3取余,余数不为0时,求前边一组然后再以此三位存到数组中    function thousandTransformer(str) {        var r = str.length % 3;        var prev = "";        var arr = [];        var count = 0;        var temp = "";        if (r != 0) {//余数不为0时,截取0到余数的字符串为数组第一项            prev = str.slice(0, r);            arr.push(prev);        }        for (var i = r; i < str.length; i++) {//每三位进数组            count++;            temp += str[i];            if (count % 3 === 0 && temp) {                arr.push(temp);                temp = "";            }        }        return arr.join(",");    }

第二种思路:使用正则

function thousandTransformer(){        var reg=/(?=(?!\b)(\d{3})+$)/g;//?=前向声明只匹配位置;?!后向声明,        return str.replace(reg,‘,‘);    }

3、返回一个只包含数字类型的一个数组?例如“fhu123kkk456g”转换为[123,78,653];

//使用正则    function getNumberArray(str){        var reg=/\d+/g;        return str.match(reg);    }

普通字符串操作

function getNumberArray(str) {        var temp = "";        var arr = [];        for (var i = 0; i < str.length; i++) {            if (str[i].charCodeAt() >= 48 && str[i].charCodeAt() <= 57) {                temp += str[i];            } else {                if (temp) {                    arr.push(temp);                    temp = "";                }            }        }        return arr;    }

 

关于字符串的一些操作