• Java 常用字符串操作总结


    1. String转ASCII码

        
    public static String stringToAscii(String value) {
            StringBuffer sbu = new StringBuffer();
            char[] chars = value.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                if (i <= chars.length - 1) {
                    int ii = chars[i];
                    sbu.append(Integer.toHexString(ii));
                } else {
                    sbu.append((int) chars[i]);
                }
            }
            return sbu.toString();
        } 
    

    2. ASCII码转String

        
    public static String asciiToString(String value) {
            if("".equals(value) || value == null){
                return "";
            }
            StringBuffer sBuffer = new StringBuffer();
            char[] chars = value.toCharArray();
            for (int i = 0; i < chars.length; i = i + 2) {
                if (i < chars.length - 1) {
                    int ii = Integer.valueOf(
                        Character.toString(chars[i]) + Character.toString(chars[i + 1]), 16);
                    sBuffer.append((char) (ii));
                }
            }
            return sBuffer.toString();
        }
    

    3. 输入流转字节数组

        
    public static String inputStream2Byte(InputStream inputStream) throws IOException {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = -1;
            while ((len = inputStream.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }
            bos.close();
            return new String(bos.toByteArray(), "UTF-8");
        }
    

    4. 输入流转字符串

        
    public static String InputStreamTOString(InputStream in) throws Exception {
            
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            byte[] data = new byte[1024];
            int count = -1;
            while ((count = in.read(data, 0, 2048)) != -1)
                outStream.write(data, 0, count);
            
            data = null;
            return new String(outStream.toByteArray());
        }
    

     

    5. 判断输入是不是包含中文

       
     public static boolean isChinese(char c) {
            Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
            if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                    || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
                    || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
                    || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
                return true;
            }
            return false;
        }
     
        public static boolean isChinese(String strName) {
            char[] ch = strName.toCharArray();
            for (int i = 0; i < ch.length; i++) {
                char c = ch[i];
                if (isChinese(c)) {
                    return true;
                }
            }
            return false;
        }
    

      

    6. 检验子网掩码的合法性:子网掩码转化为二进制之后不能全是1,也不能全是0,必须是连续的1或者连续的0,也就是说1和0不能交替出现。

      实现方式,先将4个整数字段按照每八位拼接起来,软后转化为二进制显示方式,使用正则表达式进行匹配。

      
      public static boolean checkMask(String maskStr){
            String[] ips = maskStr.split("\.");  
            String binaryVal = "";  
            for (int i = 0; i < ips.length; i++)  
            {  
                String binaryStr = Integer.toBinaryString(Integer.parseInt(ips[i]));    
                Integer times = 8 - binaryStr.length();  
                  
                for(int j = 0; j < times; j++)  
                {  
                    binaryStr = "0" +  binaryStr;  //补齐八位,每次需要进行八位合并
                }  
                binaryVal += binaryStr;  
            }  
            Pattern regxPattern = Pattern.compile("^[1]*[0]*$");
            if(regxPattern.matcher(binaryVal).matches())  
            {  
                return true;  
            }else {
                return false;
            }
        }
    

    7. 检查IP的合法性,并转化为整数表示

        
    public static boolean validIP(String ip) {
            if (ip == null) {
                return false;
            }
         String IP_REGEX  = "\b((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])\."
                                                           + "((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])\."
                                                           + "((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])\."
                                                           + "((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])\b";
            Pattern     ipPattern           = Pattern.compile(IP_REGEX);
            Matcher matcher = ipPattern.matcher(ip);
            return matcher.matches();
        }
    
        public static Integer ipString2Int(String strIp){
            if(!validIP(strIp)) return null;
    
            int[] ip = new int[4];
            String[] ips = strIp.split("\.");
    
            ip[0] = Integer.parseInt(ips[0]);
            ip[1] = Integer.parseInt(ips[1]);
            ip[2] = Integer.parseInt(ips[2]);
            ip[3] = Integer.parseInt(ips[3]);
            return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
        }
    

      

      

      

  • 相关阅读:
    Haskell语言学习笔记(38)Lens(1)
    Haskell语言学习笔记(37)RWS, RWST
    Haskell语言学习笔记(36)Data.List.Zipper
    Haskell语言学习笔记(35)Contravariant
    编程漫谈系列(4)协变(covariance),逆变(contravariance)与不变(invariance)
    Boost.Coroutine2:学习使用Coroutine(协程)
    C++17尝鲜:类模板中的模板参数自动推导
    bzoj 2797 [Poi2012]Squarks 枚举一个,推出所有
    FWT 学习笔记
    A* k短路 学习笔记
  • 原文地址:https://www.cnblogs.com/zhuyp1015/p/4345703.html
Copyright © 2020-2023  润新知