总结一下最近程序中用到的代码吧,大部分不是自己写的,放到这里,备份一下,以后忘记了来看一下;
//正则表达式验证手机号 public static void phoneTest(String phone) { /** * 目前移动、联通、电信三大运营商的手机号段如下: * 1、移动号段有: 134,135,136,137,138,139,147,150,151,152,157,158,159,178,182,183,184,187,188; * 2、联通号段有: 130,131,132,155,156,185,186,145,176; * 3、电信号段有: 133,153,177,180,181,189; * 4、 170号段为虚拟运营商专属号段,170号段的11位手机号前四位来区分基础运营商,其中 "1700" 为中国电信,"1705" 为中国移动,"1709" 为中国联通; */ Pattern pattern = Pattern .compile("^((13[0-9])|(15[^4,\D])|(14[5,7])|(17[0,6-8])|(18[0-9]))\d{8}$"); Matcher matcher = pattern.matcher(phone); if (matcher.find()) { System.out.println("your phone number is right: " + phone); } }
//正则表达式验证邮箱 public static void mailTest(String mail) { /** * 合法E-mail地址: * 1. 必须包含一个并且只有一个符号"@" * 2. 第一个字符不得是"@"或者"." * 3. 不允许出现"@."或者".@" * 4. 结尾不得是字符"@"或者"." * 5. 允许"@"前的字符中出现"+" * 6. 不允许"+"在最前面,或者"+@" */ Pattern pattern = Pattern .compile("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"); Matcher matcher = pattern.matcher(mail); if (matcher.find()) { System.out.println("your email is right: " + mail); } }
/** * 随机选取集合里的一个数字 * */ // 集合是List类型 public static int getList(List<Integer> list) { int number = list.get((int) (Math.random() * list.size())); return number; } // 集合是Set类型 public static int getSet(Set<Integer> set) { Object[] object = set.toArray(); int number = (int) object[(int) (Math.random() * object.length)]; return number; }
/* * 查找字符串中子字符串的个数 */ private static int number = 0; public static int stringNumbers(String str) { if (str.indexOf("java") == -1) { return 0; } else { number++; stringNumbers(str.substring(str.indexOf("java") + 4)); return number; } } // 也可以使用此种方式,但除了以下情况; // 子字符串是一个首尾相同的字符串,且字符串最后没有空格; // "java%%%%java****java %%%% java" public static int stringNumber(String str) { if (str.indexOf("java") != -1) { String[] str1 = str.split("java"); return str1.length - 1; } else { return 0; } }
package test; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; /** * 将中文解析为拼音 * 需要导入pinyin4j的jar包 */ public class ChineseToPinyin { // 将中文转化为拼音 public static String getPinYin(String chinese) throws BadHanyuPinyinOutputFormatCombination { // 首先需要创建格式化对象HanyuPinyinOutputFormat HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); // 设置大小写格式 // outputFormat.setCaseType(HanyuPinyinCaseType); // HanyuPinyinCaseType.LOWERCASE 转换后以全小写方式输出 // HanyuPinyinCaseType.UPPERCASE 转换后以全大写方式输出 outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 方法参数HanyuPinyinToneType有以下常量对象: // HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,例如:zhao4 // HanyuPinyinToneType.WITHOUT_TONE 无声调表示,例如:zhao // HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示,例如:zhao outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER); // 方法参数HanyuPinyinVCharType有以下常量对象: // HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音, // HanyuPinyinVCharType.WITH_V 以V表示该字符, // HanyuPinyinVCharType.WITH_U_UNICODE outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON); StringBuffer buffer = new StringBuffer(); for (Character c : chinese.toCharArray()) { buffer.append(PinyinHelper .toHanyuPinyinStringArray(c, outputFormat)[0]); buffer.append(" "); } return buffer.toString().substring(0, buffer.length() - 1); } public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination { String s = "我们都是中国人"; System.out.println(s); String pinYin = getPinYin(s); System.out.println(pinYin); } }
package test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringConvert { // 正则表达式匹配字符串,不区分大小写 public static void ignore(String string) { Pattern p = Pattern.compile("great", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(string); while (m.find()) { System.out.println(m.group()); } } /* * 在字符串中使用 * 与Pattern.CASE_INSENSITIVE对应的表达式是(?i) * 它有四种形式: (?i) (?-i) (?i:X) (?-i:X) 不带有 - 的是开标志,带有 - 的是关标志。 * 具体实现可看API */ public static void stringIgnore(String string) { String regex = "(?i)great"; System.out.println(string.matches(regex)); } // 如: 将字符串中的某一个子字符串转换为特定的字符串 public static String replace(String source, String str) { return source.replaceAll("(?i)" + str, str); } public static void main(String[] args) { String string = "you are greaT, you are GrEat,you are GREAt"; string = replace(string, "great"); System.out.println(string); } }
import java.lang.reflect.Field; import test.EntityTest; /** * 利用反射获取类的属性值(包括私有属性) * */ public class TestReflect { public static void main(String[] args) throws Exception { getFields(EntityTest.class); System.out.println("-----------"); getField(EntityTest.class); } // 获取所有的属性值 public static void getFields(Class<?> className) throws Exception { Class<?> cls = Class.forName(className.getName()); // 得到className类所有的属性(包括私有属性) Field fields[] = cls.getDeclaredFields(); String[] name = new String[fields.length]; Object os = cls.newInstance(); // 该方法表示取消java语言访问检查 Field.setAccessible(fields, true); for (int i = 0; i < name.length; i++) { name[i] = fields[i].getName(); System.out.println(name[i] + ":" + fields[i].get(os)); } } // 获取某个属性值 public static void getField(Class<?> className) throws Exception { Class<?> cls = Class.forName(className.getName()); Object obj = cls.newInstance(); Field field = cls.getDeclaredField("name"); // 该方法表示取消java语言访问检查 field.setAccessible(true); // 为属性赋值 field.set(obj, "name"); Object object = field.get(obj); System.out.println(object); } }
// 正则表达式 将多个斜杠 转换为一个 String url = "af///ddsf/sfsf//sf/d///ds////d////ds//////r"; url = url.replaceAll("/{2,}", "/"); System.out.println(url);
// 把一个字符串的第一个字母大写 public static String setFirstName(String name) { char[] chars = name.toCharArray(); chars[0] -= 'a' - 'A'; return new String(chars); }
/** * 在Window或Linux系统下使用通用分割符来分割路径 * * 在Windows系统下,Java程序获取到的路径分隔符是"" ,转译之后就是"\" * 例如:通过""分割目录:c:\xxxx\xxxx\ String[] tmp = test.split("\\"); * * 在Linux系统下,Java程序获取到的路径分隔符是"/",无需转义 * 例如:通过"/"分割目录:/xxxx/xxxx/xxxx/ */ // 而该方法为通用方法,适用于Windows和Linux系统 String[] tmp = path.split(System.getProperty("file.separator"));
/** * Json与对象的转换,使用google的GSON包来解析 */ // 对象转换为Gson,包括List转JSON public static String toJSON(Object object) { // Gson gson = new GsonBuilder().disableHtmlEscaping().serializeNulls() // .create(); Gson gson = new Gson(); String json = gson.toJson(object); return json; } // Gson转换为对象 public static Object jsonToObject(String json) { Gson gson = new Gson(); //Gson转换为 单一对象 EntityTest entityTest = gson.fromJson(json, EntityTest.class); //Gson转换为List对象 List<EntityTest> objList = gson.fromJson(json, new TypeToken<List<EntityTest>>() {}.getType()); //Gson转换为Map对象 Map<String, EntityTest> entityTests = gson.fromJson(json, new TypeToken<Map<String, EntityTest>>() {}.getType()); return objList; }
/** * 查找数据库中所有的表 * @param conn */ public void getTableNameByCon(Connection conn) { try { DatabaseMetaData meta = conn.getMetaData(); ResultSet rs = meta.getTables(null, null, null, new String[] { "TABLE" }); while (rs.next()) { System.out.println("表名:" + rs.getString("TABLE_NAME")); System.out.println("表所属用户名:" + rs.getString(2)); System.out.println("------------------------------"); } } catch (Exception e) { e.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; //对map 使用value进行排序(value为int类型) public class MapSorted { public static Map<String, Integer> solveMap(Map<String, Integer> map) { LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<String, Integer>(); ComparatorTest comparatorTest = new ComparatorTest(); ArrayList<Map.Entry<String, Integer>> entrys = new ArrayList<Map.Entry<String, Integer>>( map.entrySet()); Collections.sort(entrys, comparatorTest); for (Map.Entry<String, Integer> entry : entrys) { linkedHashMap.put(entry.getKey(), entry.getValue()); } return linkedHashMap; } static class ComparatorTest implements Comparator<Map.Entry<String, Integer>> { public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o1.getValue().compareTo(o2.getValue()); } } public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); map.put("Lisi", 90); map.put("Zhaoliu", 150); map.put("Zhangsan", 40); map.put("Wangwu", 120); map = solveMap(map); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + " ----- " + entry.getValue()); } } }
// Java 获取当前时间前一个小时的时间 public static void beforeOneHourToNowDate() { Calendar calendar = Calendar.getInstance(); // HOUR_OF_DAY 指示一天中的小时 calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY) - 1); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("当前的时间:" + df.format(new Date())); System.out.println("一个小时前的时间:" + df.format(calendar.getTime())); }
// 获取hibernate的实体类的主键名称 public String getPramaryName(Class entity) { try { Class<?> c = Class.forName(entity.getName()); Field[] fields = c.getDeclaredFields(); ; for (Field field : fields) { field.isAnnotationPresent(Id.class); String pkname = field.getName(); return pkname; } } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; }
其中所需jar包地址:
汉字转化为拼音的jar包:汉字转化为拼音的jar包
json转换使用的google的json包:google-gson-21.-release