package com.core.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.text.ParseException;
import org.apache.commons.lang.StringEscapeUtils;
import net.sourceforge.pinyin4j.PinyinHelper;
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;
public class Utility {
private static final SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat sdfshort = new SimpleDateFormat(
"yyyy-MM-dd");
private static final Random randoms = new Random();
/**
* yyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
public static String formatDate(Date date) {
if (date == null)
return "0000-00-00 00:00:00";
return sdf.format(date);
}
/**
* yyyy-MM-dd
*
* @param date
* @return
*/
public static String shortFormatDate(Date date) {
if (date == null)
return "0000-00-00";
return sdfshort.format(date);
}
/**
* yyyy-MM-dd HH:mm:ss
*
* @param str
* @return
* @throws ParseException
*/
public static Date parseDate(String str) {
if (str == null)
return null;
Date date = null;
try {
date = sdf.parse(str);
} catch (ParseException pe) {
}
return date;
}
/**
* 判断字符是否是数字
*
* @param str
* @return
*/
public static boolean isNumberString(String str) {
if (str == null || str.length() == 0)
return false;
int i = 0;
while (true) {
if (i >= str.length())
break;
char ch = str.charAt(i);
if (ch > '9' || ch < '0')
break;
i++;
}
return i == str.length();
}
/**
* 用户名为字母、数字或下划线、并不能以数字打头和纯数字
*
* @param userName
* @return
*/
public static boolean isUserName(String userName) {
boolean is = true;
String regEx = "^[a-zA-Z]{1}([a-zA-Z0-9]|[_]){3,15}$";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(userName);
is = m.find();
return is;
}
/**
* 判断是否是邮箱地址
*
* @param eMail
* @return
*/
public static boolean isEmail(String eMail) {
boolean is = true;
String regEx = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(eMail);
is = m.find();
return is;
}
/**
* 防SQL注入
*
* @param sqlStr
* @return
*/
public static String escapeSql(String sqlStr) {
sqlStr = StringEscapeUtils.escapeSql(sqlStr);
return sqlStr;
}
/**
* 过滤request
*
* @param sqlStr
* @return
*/
public static String requestEscape(String str) {
if (str == null) {
return null;
}
str = Utility.escapeSql(str);
return str;
}
public static String wipescript(String html) {
Pattern pattern1 = Pattern.compile("<script[^>]+>.*<\\/script>");
Pattern pattern2 = Pattern.compile(" href *= *[\\s\\s]*script *:");
Pattern pattern3 = Pattern.compile(" on[\\s\\s]*=");
Pattern pattern4 = Pattern.compile("<iframe[\\s\\s]+</iframe *>");
Pattern pattern5 = Pattern.compile("<frameset[\\s\\s]+</frameset *>");
Matcher matcher1 = pattern1.matcher(html);
html = matcher1.replaceAll(" ");
Matcher matcher2 = pattern2.matcher(html);
html = matcher2.replaceAll(" ");
Matcher matcher3 = pattern3.matcher(html);
html = matcher3.replaceAll(" ");
Matcher matcher4 = pattern4.matcher(html);
html = matcher4.replaceAll(" ");
Matcher matcher5 = pattern5.matcher(html);
html = matcher5.replaceAll(" ");
return html;
}
/** 生成序号 */
public static String getRedPagerNo(String str) {
String no = Utility.formatDate(new Date());
no = no.replaceAll("-", "");
no = no.replaceAll(":", "");
no = no.replaceAll(" ", "");
String sRand = "";
for (int i = 0; i < 5; i++) {
String rand = String.valueOf(randoms.nextInt(10));
sRand += rand;
}
return str + no + sRand;
}
/**
* 把汉字转换为拼音
*
* @param input
* @return
*/
public static String toPinyin(String input) {
StringBuilder sb = new StringBuilder();
HanyuPinyinOutputFormat PINYIN_FORMAT = new HanyuPinyinOutputFormat();
PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V);
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c <= 255) {
sb.append(c);
} else {
String pinyin = null;
try {
String[] pinyinArray = PinyinHelper
.toHanyuPinyinStringArray(c, PINYIN_FORMAT);
pinyin = pinyinArray[0];
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
} catch (NullPointerException e) {
// 如果是日文,可能抛出该异常
e.printStackTrace();
}
if (pinyin != null) {
sb.append(pinyin);
sb.append(" ");
}
}
}
return sb.toString();
}
public static Long dateToLong(Date date) {
String strDate = formatDate(date);
strDate = strDate.replaceAll("-", "");
strDate = strDate.replaceAll(":", "");
strDate = strDate.replaceAll(" ", "");
return Long.valueOf(strDate);
}
public static void main(String[] arg) {
System.out.println(Utility.wipescript("<script>var d = 0;</script>"));
}
}
分享到:
相关推荐
"Delphi常用类型转换" Delphi 中的类型转换是指将一个数据类型转换为另一个数据类型的过程。在 Delphi 中,有多种类型转换函数,可以实现不同的类型转换。下面是 Delphi 中常用的类型转换函数: 1. Chr 函数:将一...
在C#编程中,类型转换是开发者经常遇到的操作,它涉及到不同数据类型的相互转化。本文将深入探讨C#中常见的类型转换扩展,并介绍如何通过扩展方法来增强类型转换的便捷性和可读性。 首先,我们要了解C#内置的类型...
连接字符串常用:concat函数。如sql查询条件的like查询, AND c.name like concat(#{param.name},’%’) 将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80’ 2、Cast函数;CONVERT函数...
本篇将详细讲解C++和MFC中常用的类型转换类以及如何进行`int`、`double`、`string`、`CString`之间的转换。 1. `int`与`double`的转换: - `int`到`double`:C++提供了隐式转换,可以直接将`int`赋值给`double`,...
在Java编程语言中,数据类型转换是常见的操作,特别是在处理用户输入、数据库交互或进行算术运算时。本文主要探讨了Java中常见的类型转换方法,包括字符串与数值类型之间的转换,以及数值类型到字符串的转换。 1. *...
#### 二、常用类型转换函数 1. **CAST() 和 CONVERT()** - 这两个函数可以用来将一个表达式的值转换为另一种数据类型。 - **语法**:`CAST(表达式 AS 数据类型)` 或 `CONVERT(表达式 USING 字符集)`(仅用于字符...
### Python常用类型转换详解 在Python编程中,数据类型的转换是一项基本且重要的技能。通过合理的类型转换,可以更高效地处理各种数据结构和格式。本文将详细介绍Python中常见的几种类型转换方法,并通过具体的代码...
本篇文章将深入探讨JS中常用类型转换的方法,以及各种运算符表达式的使用。 一、JS中常用类型转换方法 类型转换是将一种数据类型转换为另一种数据类型的过程。在JS中,类型转换分为隐式转换和显式转换。显式转换又...
以下是一些关于VC常用数据类型转换的详细说明: 1. **BSTR、LPSTR 和 LPWSTR** - **BSTR**(Basic String)是OLECHAR*类型的Unicode字符串,用于自动化兼容性。它由系统API(如`SysAllocString`)管理,并包含一个...
这些类型之间可以进行转换,以下是 JavaScript 中最常用的数据类型转换方法。 一、转为字符串 在 JavaScript 中,可以使用两种方法将其他类型转换为字符串类型:toString() 方法和 String() 方法。 1. toString()...
在C++编程中,数据类型转换是非常常见的操作,它有助于程序员更加灵活地处理各种数据。本文将详细介绍C++中几种常见数据类型之间的转换方法,帮助读者更好地理解和掌握这些技巧。 #### 标题:C++常用变量类型的转换...
类型转换是指将一种数据类型转换为另一种数据类型的过程。在C#中,类型转换有两种主要方式:隐式转换和显式转换。 - **隐式转换**:当从位数较少的数据类型转换到位数较多的数据类型时,C#会自动进行转换,无需...
在“java 常用基础类型之强制转换”这个主题中,我们将深入探讨Java中的基本数据类型转换规则和注意事项。 1. **基本数据类型的转换** Java中有八种基本数据类型:`byte`, `short`, `int`, `long`, `float`, `...
C++ 到 C# 数据类型转换 在软件开发中,数据类型转换是一个非常重要的步骤,特别是在使用不同的编程语言时。C++ 和 C# 是两种非常流行的编程语言,它们之间的数据类型转换是非常必要的。本文将详细介绍 C++ 到 C# ...
"数据库中常用的数据类型转换" 在数据库应用程序中,数据类型转换是一个非常重要的知识点。由于数据库中的数据类型和应用程序中的数据类型可能不同,因此在进行数据交换时,需要进行类型转换。今天,我们将总结...
`CONVERT`函数也是实现数据类型转换的一个常用方法,特别是在处理字符类型到数字类型的转换时。 ```sql -- 示例:将字符串'123'转换为整型 SELECT CONVERT('123', SIGNED); ``` #### 五、总结:类型转换语法与...
不同的数据类型适用于不同的应用场景,而正确地进行类型转换能够确保程序的健壮性和准确性。在实际开发中,理解并熟练运用这些转换方法,将大大提升代码的质量和效率。此外,对于高级类型如VARIANT的掌握,更是深入...
C++常用数据类型使用转换详解