Java 常用字符串操作总结

时间:2024-01-16 12:56:56

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