zoukankan      html  css  js  c++  java
  • 关于字符串的一些操作

    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=/(?=(?!)(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;
        }
  • 相关阅读:
    Python推导式(Comprehension)
    mysql中文乱码
    入门学习hibernate
    什么是ORM?
    Java网站中的权限管理
    Java的8中基本数据类型
    Python获取文件夹大小
    Python技巧
    Python中取整的方法floor,ceil,round
    Python线程join和setDaemon
  • 原文地址:https://www.cnblogs.com/hxc555/p/5932169.html
Copyright © 2011-2022 走看看