java函数大全_我的 Java 工具函数汇总

字符串工具函数

是否空字符串

assertTrue(isEmptyString(""));

assertTrue(isEmptyString(" "));

assertTrue(isEmptyString(null));

Java String 有 split 却没有 join,这里实现一个

assertEquals(stringJoin(new String[] { "a", "b", "c" }, ","), "a,b,c");

assertEquals(stringJoin(new ArrayList() {

private static final long serialVersionUID = 1L;

{

add("a");

add("b");

add("c");

}

}, ","), "a,b,c");

重复字符串 repeat 次并以 div 分隔

assertEquals(repeatStr("Hi",",",3),"Hi,Hi,Hi");

输入 a,看 a 里面是否包含另一个字符串 b,忽略大小写

assertTrue(containsIgnoreCase("abc","A"));

使用正则的快捷方式

assertEquals(regMatch("^a","abc"),"a");// 匹配结果,只有匹配第一个

assertEquals(regMatch("^a","abc",0),"a");// 可指定分组

assertEquals(regMatch("^a(b)","abc",1),"b");

URL 编码/解码,默认 UTF-8 编码

String str = "中国";

assertEquals(urlDecode(urlEncode(str)), str);

Base64 编码/解码

String str = "中国";

assertEquals(base64Decode(base64Encode(str)), str);

使用了 JDK 自带的 sun.misc.BASE64Decoder 实现。

MD5

String str = "中国";

assertEquals(md5("123123"), "4297F44B13955235245B2497399D7A93");

使用了 JDK 自带的 MessageDigest + javax.xml.bind.DatatypeConverter 实现。

字节转为 UTF-8 字符串

public static String byte2String(byte[] bytes);

public static String byte2String(String str);

public static String urlChinese(String str); // url 网址中文乱码处理

日期工具函数

import static org.junit.Assert.*;

import java.util.Date;

import static com.ajaxjs.util.DateTools.*;

import org.junit.Test;

import com.ajaxjs.util.DateTools;

public classTestDateTools{

@Test

public void testNow() {

assertNotNull(now()); // 返回当前时间的 YYYY-MM-dd HH:MM:ss 字符串类型

assertNotNull(now(DateTools.commonDateFormat)); // 返回当前时间,并对当前时间进行格式化

}

@Test

public void testFormat() {

Date date = Objet2Date("2009-07-25 11:16:09");

assertEquals(formatDate(date), formatDate(date, DateTools.commonDateFormat)); // 对输入的时间进行格式化,采用格式 yyyy-MM-dd HH:mm:ss

assertEquals(date.toString(), "Tue Jul 25 11:16:09 CST 2009");

assertEquals(Objet2Date(date).getTime(), date.getTime());

assertEquals(Objet2Date(date.getTime()).getTime(), date.getTime());

assertEquals(Objet2Date("2009-07-25 11:16:09").getTime(), date.getTime()); // 转换字符串类型的日期到 Date 类型

}

}

集合工具函数

集合是否为空

import static com.ajaxjs.util.collection.CollectionUtil.*;

// Array

assertTrue(!isNull(new Object[] { 1, 2 }));

assertTrue(!isNull(new String[] { "1" }));

assertTrue(isNull(new Object[] {}));

Object[] arr = null;

String[] strs = null;

assertTrue(isNull(arr));

assertTrue(isNull(strs));

// List

assertTrue(!isNull(new ArrayList() {

private static final long serialVersionUID = 1L;

{

add(1);

}

}));

assertTrue(isNull(new ArrayList()));

assertTrue(!isNull(new ArrayList() {

private static final long serialVersionUID = 1L;

{

add(null);

}

}));

// Map

assertTrue(!isNull(new HashMap() {

private static final long serialVersionUID = 1L;

{

put("foo", null);

}

}));

assertTrue(isNull(new HashMap()));

数组互换

import static com.ajaxjs.util.collection.CollectionUtil.*;

String str = "1,2,3";

int[] arr = new int[] { 1, 2, 3 };

// 当它们每一个都是数字的字符串形式,转换为整形的数组 "1,2,3, ..." --> [1, 2, ...]

assertEquals(Arrays.toString(strArr2intArr(str, ",")), Arrays.toString(arr));

// 整形数组转换为字符数组 [1, 2, ...] --> "1,2,3, ..."

assertEquals(Arrays.toString(int_arr2string_arr(arr)), Arrays.toString(new String[] { "1", "2", "3" }));

// List 转换为字符串数组/数组效的话率更高一些

assertEquals(Arrays.toString(stringList2arr(new ArrayList() {

private static final long serialVersionUID = 1L;

{

add("1");

add("2");

add("3");

}

})), Arrays.toString(new String[] { "1", "2", "3" }));

Map 数据处理

Map 转换为字符串,默认 & 作为分隔符

Map map = new HashMap() {

private static final long serialVersionUID = 1L;

{

put("foo", null);

put("bar", 500);

put("zx", "hi");

}

};

@Test

public void testJoin() {

assertEquals("zx=hi&foo=null&bar=500", join(asString(map)));

}

Tips:怎么删掉最后一个分号?方法有很多,收集如下:

// 另外一种算法

for (String key : pair.keySet()) {

cookieStr += key + "=" + pair.get(key) + ";";

cookieStr = cookieStr.substring(0, cookieStr.length() - 1);

}

// 另外一种算法

int i = 0;

for(String key : hash.keySet()) {

...

if(++i != size)

buff.append(",");

}

// 另外一种算法,删除最后一个 ,

if (buff.length() > 1)

buff = buff.deleteCharAt(buff.length() - 1);

// 另外一种算法,删除最后一个 , ...

if(i != arr.length - 1)

str += ",";

Map 的泛型类型转换,从 Map 转换为 Map

@Test

public void testAsString() {

assertEquals(asString(map).get("bar"), "500");

}

Map 的泛型类型转换,转换为 Map。 可选择类型转换真实值,如 "2"-->2,"true",-->true,"null"-->null。要求 String 类型才可以 CastRealValue TODO 这个是否需要要求这样?

@Test

public void testAsObject() {

assertEquals(asObject(new HashMap() {

private static final long serialVersionUID = 1L;

{

put("foo", "null");

put("bar", "500");

put("zx", "hi");

}

}).get("bar"), "500");

assertEquals(asObject(new HashMap() {

private static final long serialVersionUID = 1L;

{

put("foo", "null");

put("bar", "500");

put("zx", "hi");

}

}, true).get("bar"), 500);

}

Map 转换为 Map,其中 value[] 变成 , 分割的单个字符串。

assertEquals(toMap(new HashMap() {

private static final long serialVersionUID = 1L;

{

put("foo", new String[] { "a", "b" });

put("bar", new String[] { "1", "c", "2" });

}

}).get("bar"), "1,c,2");

数据结构的简单转换 String[]-->Map

assertEquals(

toMap(new String[] { "a", "b", "d" }, new String[] { "1", "c", "2" }).get("a"),

1

);

assertEquals(

toMap(new String[] { "a=1", "b=2", "d=c" }).get("a"),

1

);

assertEquals(

toMap(new String[] { "a=%e4%bd%a0%e5%a5%bd", "b=2", "d=c" }, true).get("a"),

"你好"

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值