package com.worthtech.app.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class StringUtil {
private static MessageDigest digest = null;
/**
* 对字符串进行MD5加密
* @param data
* @return
*/
public String hash(String data) {
if (digest == null)
try {
digest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException nsae) {
System.err.println("Failed to load the MD5 MessageDigest. We will be unable to function normally.");
nsae.printStackTrace();
}
digest.update(data.getBytes());
return encodeHex(digest.digest());
}
private String encodeHex(byte bytes[]) {
StringBuffer buf = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
if ((bytes[i] & 0xff) < 16)
buf.append("0");
buf.append(Long.toString(bytes[i] & 0xff, 16));
}
return buf.toString().toUpperCase();
}
/**
* 在list中查询以prefix开头的子项,返回符合匹配的list
* @param list
* @param prefix
* @return
*/
public List getMatches(List list,String prefix) {
String prefix_upper = prefix.toUpperCase();
List matches = new ArrayList();
Iterator iter = list.iterator();
while (iter.hasNext()) {
String name = (String) iter.next();
String name_upper = name.toUpperCase();
if (name_upper.startsWith(prefix_upper)) {
matches.add(name);
}
}
return matches;
}
/**
* 统计字符出现次数
* @param s
*/
public Map<Character, Integer> getStatistics(String s) {
Map<Character, Integer> map = new HashMap<Character, Integer>();
int i, size = s.length();
for (i = 0; i < size; i++) {
char c = s.charAt(i);
map.put(c, map.containsKey(c) ? ((Integer) map.get(c) + 1) : 1);
}
return map;
}
/**
* 将一字符串数组用指定的分隔符接起来
* @param array
* @param split
* @return
*/
public String addSplit(String[] array, String split) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length - 1; i++)
sb.append(array[i] + split);
sb.append(array[array.length - 1]);
return sb.toString();
}
public static void main(String[] args){
// StringUtil util=new StringUtil();
}
/**
* Encode string to hex string, hex string can use in url
* @param str
* @return hex string
*/
public static String HexEncode(String str) {
String hexString = null;
if (str != null && str.length() > 0) {
char[] digital = "0123456789ABCDEF".toCharArray();
StringBuffer sb = new StringBuffer("");
try {
byte[] bs = str.getBytes("utf-8");
int bit;
for (int i = 0; i < bs.length; i++) {
bit = (bs[i] & 0x0f0) >> 4;
sb.append(digital[bit]);
bit = bs[i] & 0x0f;
sb.append(digital[bit]);
}
} catch(Exception e) {
}
hexString = sb.toString();
}
return hexString;
}
/**
* Decode hex string
* @param hexString
* @return
*/
public static String HexDecode(String hexString) {
String str = null;
if (hexString != null && hexString.length() > 0) {
String digital = "0123456789ABCDEF";
char[] hex2char = hexString.toCharArray();
byte[] bytes = new byte[hexString.length() / 2];
int temp;
for (int i = 0; i < bytes.length; i++) {
temp = digital.indexOf(hex2char[2 * i]) * 16;
temp += digital.indexOf(hex2char[2 * i + 1]);
bytes[i] = (byte)(temp & 0xff);
}
try {
str = new String(bytes, "utf-8");
} catch (Exception e) {
}
}
return str;
}
/**
* judge a string is null or empty
* @param str
* @return return true if str is null or empty, otherwise false
*/
public static boolean isEmpty(String str) {
return (str == null || str.length() == 0);
}
/**
*将多余的文字用...代替(length为双字节,比如length=18,表示9个汉字)
*/
public static String getLimitLengthString(String str, int length) {
String view = null;
int counterOfDoubleByte = 0;
byte b[];
if (str == null) {
return "";
} else {
try {
b = str.getBytes("GBK");
if (b.length <= length)
return str;
for (int i = 0; i < length; i++) {
if (b[i] > 0)
counterOfDoubleByte++;
}
if (counterOfDoubleByte % 2 == 0)
view = new String(b, 0, length, "GBK") + "...";
else
view = new String(b, 0, length - 1, "GBK") + "...";
} catch (Exception e) {
e.printStackTrace();
}
return view;
}
}
//身份证效验规则
//http://since2006.com/blog/chinese-id-verify/
public boolean isIdCard(String arrIdCard) {
int sigma = 0;
Integer[] a = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
String[] w = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
for (int i = 0; i < 17; i++) {
int ai = Integer.parseInt(arrIdCard.substring(i, i + 1));
int wi = a[i];
sigma += ai * wi;
}
int number = sigma % 11;
String check_number = w[number];
//return check_number;
//System.out.println(check_number);
if (!arrIdCard.substring(17).equals(check_number)) {
return false;
} else {
return true;
}
}
}
分享到:
相关推荐
2. **集合框架**:由`java.util`包提供,包括`List`、`Set`、`Map`接口及其实现,如`ArrayList`、`HashSet`、`HashMap`等,它们是数据存储和组织的关键工具。 3. **输入/输出**:`java.io`包包含各种流类,如`...
JavaUtils A collection of some common tools ...src/com.cnblogs.honoka.utils.StringUtil.java:字符串处理工具类 src/com.cnblogs.honoka.utils.ToolsUtil.java:常用功能工具类 src/com.cnblogs.honoka.utils.Da
- **全局工具类所在包命名规范**:采用`公司名称.开发组名称.项目名称.util`的格式。 - 示例:`net.linkcn.util` #### 四、类命名规范 1. **基本命名规范**:类名应以大写字母开头,如果有多个单词,则每个单词首...
4. **多线程**:Java 2引入了更强大的多线程支持,`java.lang.Thread`和`java.util.concurrent`包提供了创建、管理和同步线程的工具。 5. **网络编程**:`java.net`包包含了处理网络连接和协议的类,使得Java程序能...
6. java.util:包含一些实用工具类和数据结构类。 java 的移位运算符: 1. 左移 <<:带符号右移。 2. 右移 >>:无符号右移。 3. 无符号右移 >>>。 java 中的数组: 1. java 中一维数组在定义的时候是不能够分配...
2. **集合框架**: `java.util`包下的`ArrayList`、`LinkedList`、`HashMap`、`HashSet`等类提供了数据存储和操作的高效工具。 3. **多线程**: `java.lang.Thread`和`java.util.concurrent`包提供了线程管理和并发...
- **全局工具类所在包**:`net.linkcn.web.crm.util` #### 三、类命名规范 类命名规范旨在通过一致的命名方式提高代码的可读性和可维护性。 - **基本命名规范** - **类与接口**:以大写字母开头,每个单词首...
- **全局工具类**: `公司名称.开发组名称.项目名称.util` - 示例: `net.linkcn.util` #### 五、类命名规范 - **基本命名规则**: - 类和接口的命名应以大写字母开头,若有多个单词,则每个单词的首字母均需大写。 ...
涉及到数组、字符串(String),以及Java标准库中的一些数据结构如java.util.Data、java.util.Calendar、java.util.Time和java.util.Date等。 9. Java Applet 和 Java Application Java Applet是运行在浏览器中的小...
import java.util.*; // 导入必要的类或包 public class ClassName { // 类声明 // 属性定义 // 方法定义 public ClassName() { // 构造方法 // 初始化逻辑 } public static void main(String[] args) { // 主...
- `src-util`:工具类或辅助类存放处。 - `web`:Web应用程序的主要目录,包括`WEB-INF`子目录和相关的`.html`或`.jsp`页面。 具体的目录和文件结构如下所示: ``` webservice └── src-service ├── ...
- **日期和时间**:`java.util.Calendar`和`java.time`包提供获取日期和时间的方法,`System.currentTimeMillis()`获取从1970年开始的毫秒数,`LocalDate`和`LocalTime`类可方便地处理日期和时间。 2. **数组和...
Java标准库提供了`java.util.Timer`类和`java.util.TimerTask`类,用于在后台线程中安排一次性或周期性任务。以下是如何使用这两个类的一个简单示例: ```java import java.util.Timer; import java.util.TimerTask...
1. **java.lang**:提供了一些核心类,如`String`、`Integer`等。 2. **java.util**:提供了集合框架,如`List`、`Set`、`Map`等。 3. **java.io**:提供了文件I/O相关的类,如`FileInputStream`、`...
1. 基本类型库:包括java.lang包中的基本类型类(如String、Math等)、java.io包中的输入输出类、java.util包中的集合框架类等。 2. 网络编程:***包提供了一组类和接口,用于网络编程,实现客户端和服务器端的通信...
- java.util:包含了Java的基础数据结构类、工具类等,如ArrayList、HashMap、Comparator等。 针对Java程序员的面试,面试官通常会围绕Java基础、JDK新特性、Java集合框架、多线程并发编程、JVM性能调优等主题展开...
import java.util.Date; public class Demo1 { public static void main(String[] args) { System.out.print("你好,今天是 "); System.out.println(new Date()); } } ``` 5. Java程序基本结构: - package...
import java.util.List; import org.shen.ec.vo.Note; public interface NoteDAO { List<Note> getAllNotes(); Note getNoteById(int id); void addNote(Note note); void updateNote(Note note); void ...
- `java.util`:包含各种实用工具类,如集合框架、日期时间、随机数等。 - `java.io`:提供输入输出流处理,支持文件操作和网络通信。 - `java.awt`:图形用户界面(GUI)类库,用于创建窗口和控件。 - `java...