关于字符串的一些操作

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

//第一种思路:借助json格式来实现
    function getMore(str) {
        var result = {};
        var num = 0;
        var value = "";
        //将字符串以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, value = "";
        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;
    }

 

posted @ 2016-10-05 17:54  超人会飞555  阅读(212)  评论(0编辑  收藏  举报