用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

Java 常用字符串操作总结

2017-09-08 作者:低调的小飞举报

[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];
    }


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。