`
mjs123
  • 浏览: 34128 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

String Tools类

阅读更多

import java.text.Collator;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Random;
import java.util.TimeZone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * <p>字符串处理通用工具类</p>
 * 字符串空串处理、随机串生成等.
 * @author  zz
 */
public final class StringTools
{
    // 随机串缺省长度:
    private static final int LEN = 6;
   
    // 随机串码表:ASCII_NUMERIC、ASCII_ALPHA(UPPER/LOWER)
    private static final char[] ASCII_NUMERIC = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
   
    // 随机对象:
    private static final Random RANDOM = new Random();
   
    // Locale 参数顺序
    private static final int LANGUAGE = 0;
   
    private static final int COUNTRY = 1;
   
    private static final int VARIANT = 2;
   
    private static final int DEFAULT_LENGTH = 50;
   
    /**
     * <默认构造函数>
     */
    private StringTools()
    {
       
    }
   
    /**
     * <p>字符串判空</p>
     * 判断一个对象是否为“空串”.
     * @param val 要判断的对象.
     * @return true “空串”, false 非空或不是字符串.
     */
    public static boolean isNullOrNone(Object val)
    {
        if (null == val)
        {
            return true;
        }
       
        if (val.getClass() == String.class && "".equals(val))
        {
            return true;
        }
        return false;
    }
   
    /**
     * <p>字符串比较</p>
     * 比较两个字符串是否相等,都为null时,认为相等.
     * @param val1  字符串1
     * @param val2  字符串2
     * @return true 两字符串相等(或都为null) false 两字符串不相等.
     */
    public static boolean isEquals(String val1, String val2)
    {
        if (null == val1 && null == val2)
        {
            return true;
        }
       
        if (val1 != null && val2 != null)
        {
            Collator c = Collator.getInstance();
            if (c.compare(val1, val2) == 0)
            {
                return true;
            }
        }
       
        return false;
    }
   
    /**
     * <p>获取从页面传递参数信息</p>
     * 将页面中传入的对象属性值解析成key:value形式放入map中,供外部使用。适用于struts2
     * 页面传入的对象必须覆盖toString()方法,且格式必须为:
     * prop:value;prop:value;prop:value
     * @param key 参数键值.
     * @param map 被搜索的Map结构.
     * @return 页面参数Map对象.
     */
    public static Map<String, String> getPropMap(String key, Map<String, String[]> map)
    {
        String[] strArr = map.get(key);
        if (isNullOrNone(strArr) || 0 == strArr.length)
        {
            return new HashMap<String, String>(0);
        }
       
        strArr = strArr[0].split(";");
        int length = strArr.length;
        String tempKey = "";
        String tempVal = "";
        String[] tempArr = null;
        Map<String, String> tempMap = new HashMap<String, String>();
        for (int i = 0; i < length; i++)
        {
            tempArr = strArr[i].split(":");
            tempKey = String.valueOf(tempArr[0]).trim();
            tempVal = String.valueOf(tempArr[1]).trim();
            tempMap.put(tempKey, tempVal);
        }
        return tempMap;
    }
   
    /**
     * <p>获取从页面传递参数信息</p>
     * 获取从页面传递的String类型的参数信息,适用于struts2
     * @param key 键.
     * @param map 被搜索的Map结构.
     * @return 参数字符串值.
     */
    public static String getStringParam(String key, Map<String, String[]> map)
    {
        String[] strArr = map.get(key);
        if (isNullOrNone(strArr) || 0 == strArr.length)
        {
            return "";
        }
        return strArr[0];
    }
   
    /**
     * <p>获取从页面传递参数信息</p>
     * 获取从页面传递的String类型的参数信息,适用于struts2
     * @param key 键.
     * @param map 被搜索的Map结构.
     * @return 参数布尔值.
     */
    public static boolean getBooleanParam(String key, Map<String, String[]> map)
    {
        String[] strArr = map.get(key);
        if (isNullOrNone(strArr) || 0 == strArr.length)
        {
            return false;
        }
       
        return Boolean.parseBoolean(strArr[0]);
    }
   
    /**
     * <p>获取从页面传递参数信息</p>
     * 获取从页面传递的String类型的参数信息,适用于struts2
     * @param key 键.
     * @param map 被搜索的Map结构.
     * @return 参数整型值.
     *
     */
    public static int getIntParam(String key, Map<String, String[]> map)
    {
        String[] strArr = map.get(key);
        if (isNullOrNone(strArr) || 0 == strArr.length)
        {
            return -1;
        }
       
        return Integer.parseInt(strArr[0]);
    }
   
    /**
     * <p>字符串分割</p>
     * 将字符串分割成字符串数组, 类似toCharArray方法.
     * @param input 被分的字符串.
     * @return 分成的字符串数组.
     */
    public static String[] toStringArray(String input)
    {
        if (isNullOrNone(input))
        {
            return new String[0];
        }
       
        int length = input.length();
        String[] strArr = new String[length];
       
        for (int i = 0; i < length; i++)
        {
            strArr[i] = String.valueOf(input.charAt(i));
        }
       
        return strArr;
    }
   
    /**
     * <p>字符串合成</p>
     * 将字符串数组转换成字符串.
     * @param item 字符串数组.
     * @return 合成后的字符串.
     */
    public static String arrayToString(String[] item)
    {
        if (item == null || item.length == 0)
        {
            return "";
        }
       
        StringBuffer msg = new StringBuffer();
        for (int i = 0; i < item.length; i++)
        {
            msg.append(item[i]);
        }
       
        return msg.toString();
    }
   
    /**
     * 获取随机串.
     * 获取缺省长度的随机数字串,首字符可以为'0'.
     * @author zhangtao(42373)
     * @return 缺省长度(6)数字串.
     */
    public static String getRandomNum()
    {
        return getRandomNum(LEN);
    }
   
    /**
     * 获取随机串.
     * 获取指定长度的随机数字串,首字符可以为'0'.
     * @author zhangtao(42373)
     * @param len 指定字符串中字符个数.
     * @return 定长数字串.
     */
    public static String getRandomNum(int len)
    {
        StringBuffer sb = new StringBuffer(len);
        int max = ASCII_NUMERIC.length;
       
        for (int i = 0; i < len; i++)
        {
            sb.append(ASCII_NUMERIC[RANDOM.nextInt(max)]);
        }
       
        return sb.toString();
    }
   
    /**
     * 去掉电话号码中的"<"前内容,">"后内容
     * 例如:Tom<13800000020> 返回13800000020
     * @author liuqian
     * @param uiMobile 显示的电话号码
     * @return String 返回没有<>格式的电话号码
     */
    public static String getUiMobile(String uiMobile)
    {
        if (isNullOrNone(uiMobile))
        {
            return "";
        }
        int start = uiMobile.indexOf('<');
        int end = uiMobile.indexOf('>');
        if (start > -1 && end > -1 && end > start)
        {
            return uiMobile.substring(start + 1, end);
        }
        return uiMobile;
    }
   
    /**
     * 是否包含非ASCII字符
     * @param msg 待校验的字符串
     * @return true 包含, false 不包含
     */
    public static boolean isContainUnicode(String msg)
    {
        for (int i = 0; i < msg.length(); i++)
        {
            Character c = msg.charAt(i);
            Character.UnicodeBlock blk = Character.UnicodeBlock.of(c);
            if (blk != Character.UnicodeBlock.BASIC_LATIN)
            {
                return true;
            }
        }
        return false;
    }
   
    /**
     * 根据字符串生成Locale
     * 根据数据库中表示语言信息的Locale字符串,如zh_CN来生成对应的Locale对象
     * @author zhangtao(42373)
     * @param locale 表示Locale的字符串,如zh_CN
     * @return Locale 对象
     * @see java.util.Locale
     */
    public static Locale getLocale(String locale)
    {
        String[] parts = {"", "", ""};
        String[] tmp = locale.split("_");
        System.arraycopy(tmp, 0, parts, 0, Math.min(tmp.length, parts.length));
        return new Locale(parts[LANGUAGE], parts[COUNTRY], parts[VARIANT]);
    }
   
    /**
     * 处理通用参数是否为数值
     * @param parameter 参数
     * @return boolean 匹配 true 不匹配 false
     */
    public static boolean isNumber(String parameter)
    {
        if (null == parameter)
        {
            return false;
        }
       
        Pattern p = Pattern.compile("[0-9]+");
        Matcher m = p.matcher(parameter);
        return m.matches();
    }
   
    /**
     * 处理通用参数是否为符合规则的字符串
     * @param parameter 参数
     * @param regex 匹配的字符串规则
     * @return true 表示匹配 false 不匹配
     */
    public static boolean isValidStringAllow(String parameter, String regex)
    {
        if (null == parameter || "".equals(parameter))
        {
            return false;
        }
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(parameter);
       
        return m.find();
    }
   
    /**
     * 由于字符串太长,需要截取一定的长度,默认为50
     * @param str 需要被截取的字符串
     * @return String [返回类型说明]
     * @see [类、类#方法、类#成员]
     */
    public static String getStrByDefLength(String str)
    {
        if (isNullOrNone(str) || str.length() <= DEFAULT_LENGTH)
        {
            return str;
        }
        else
        {
            return str.substring(0, DEFAULT_LENGTH) + "......";
        }
    }
   
    /**
     * 将本地时间格式化为UTC时间
     * @param timeFormat 时间格式
     * @return newtime 转换后的时间
     * @see [类、类#方法、类#成员]
     */
    public static String getUTCtime(String timeFormat)
    {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sFormat = new SimpleDateFormat(timeFormat);//时间格式:yyyy-MM-dd HH:mm:ss
       
        TimeZone zone = TimeZone.getTimeZone("GMT");
        sFormat.setTimeZone(zone);
       
        String newtime = sFormat.format(cal.getTime());
        return newtime;
    }
}

分享到:
评论

相关推荐

    Educoder题目:Java面向对象 - String类答案解析.md

    Educoder题目:Java面向对象 - String类答案解析

    string tools – python(最新可编辑文档).doc

    string tools – python(最新可编辑文档)

    geotools稳定版本geotools-19.4-bin.zip

    public static void main(String[] args) throws Exception { // display a data store file chooser dialog for shapefiles File file = JFileDataStoreChooser.showOpenFile&#40;"shp", null&#41;; if (file =...

    Android String Tool(Android工程的字串工具)

    1)扫描Android工程中所有的指定语言的字串资源(xml文件)并生成字串表stringTable.xls 2)修改字串表stringTable.xls后,可以生成xml文件放在./out/Project目录中,并且保持改资源文件在原始工程中的目录结构。 3...

    parquet-tools.jar

    -h,--help Show this help string -j,--json Show records in JSON format. --no-color Disable color output even if supported where &lt;input&gt; is the parquet file to print to stdout usage: parquet-tools ...

    string-tools:一些有用的函数来处理字符串

    ⇒ string ⇒ string ⇒ string ⇒ string符号一些跨平台符号( tick和cross ) 类型: 静态属性 s.escapeRegExp() 转义特殊的正则表达式字符类型: string-tools静态方法例子&gt; s . escapeRegExp ( "(.*)" ) ;'\\...

    yujianbo-java-tools-7.7.0.zip

    yujianbo-java-tools.jar是本人平时里用到的工具类,分离出来打包成一个单独的jar工具包,里面包括配置properties后, 1、数据库的一键连接以及增删改查,获取数据库数据直接映射到JavaBean; 2、生成随机验证码...

    Open Ftp SSH Tools

    Public Function Upload(ByVal localPath As String, ByVal remotePath As String) As String Try If (m_sshCp.Connected = False) Then m_sshCp.Connect(10022) End If Try m_sshCp.Put_resume(localPath, ...

    yujianbo-java-tools-8.2.0.jar

    1、将SwingService修改为内部静态类的方式,把comp,chart,tools,包括进去 2、优化了SysMathService的内部静态类 3、在SysMathService中增加了获取指定个数和范围的随机数的方法 yujianbo-java-tools.jar是本人...

    org.apache.tools.zip解决解压乱码问题

    * 描述:压缩/解压缩zip包处理类 * 创建者:XXX * 创建日期:2015年5月7日 - 下午1:35:02 * 版本: V0.1 * 修改者: * 修改日期: */ public class ZipUtil { /** * * ...

    yujianbo-java-tools-7.8.0.jar

    yujianbo-java-tools.jar是本人平时里用到的工具类,分离出来打包成一个单独的jar工具包,里面包括: 1、数据库的一键连接以及增删改查,获取数据库数据直接映射到JavaBean; 2、生成随机验证码(字符或数字或者...

    yujianbo-java-tools-8.0.0.jar

    yujianbo-java-tools.jar是本人平时里用到的工具类,分离出来打包成一个单独的jar工具包,里面包括: 1、数据库的一键连接以及增删改查,获取数据库数据直接映射到JavaBean; 2、生成随机验证码(字符或数字或者...

    serial-string-receiver-tools.zip_serial串口接收_string receiver_串口通信

    串口通信基于STC89C51的串口字符串接收工具

    An universal algorithm design of locating fixed length string

    String locating is a very common operation not only in the SQL design but also in the client development tools, in which functions are also supplied to realize the locating operation, such as the '...

    yujianbo-java-tools-8.2.1.jar

    yujianbo-java-tools.jar是本人平时里用到的工具类,分离出来打包成一个单独的jar工具包,里面包括: 1、数据库的一键连接以及增删改查,获取数据库数据直接映射到JavaBean; 2、生成随机验证码(字符或数字或者...

    yujianbo-java-tools-8.0.5.jar

    yujianbo-java-tools.jar是本人平时里用到的工具类,分离出来打包成一个单独的jar工具包,里面包括: 1、数据库的一键连接以及增删改查,获取数据库数据直接映射到JavaBean; 2、生成随机验证码(字符或数字或者...

    file-string-tools:获取不带文件扩展名的文件名

    文件字符串工具npm软件包用法首先,安装file-string-tools ,在终端中输入: $ npm install file-string-tools例子 const FileTOOLS = require ( 'file-string-tools' ) ;const tool = new FileTOOLS ( ) ;console ....

    yujianbo-java-tools-8.0.8.jar

    yujianbo-java-tools.jar是本人平时里用到的工具类,分离出来打包成一个单独的jar工具包,里面包括: 1、数据库的一键连接以及增删改查,获取数据库数据直接映射到JavaBean; 2、生成随机验证码(字符或数字或者...

    String工具箱

    public class StringUtil { //判断一个字符串中是否包含一个数字 public static boolean isDigit(String s){ //0--9; char c[]=s.toCharArray(); for(int i=0;i;i++){ if(c[i]&gt;='0'&&c[i]){ return ...

    Android代码-AndroidTools

    开发过程中常用的工具类 AppUtil DensityUtil EncodeUtil ScreenUtil StringUtil EncryptUtil 无限重复、自动滚动的ImageView; 加载中的样式 LoadingView;支持circular progressbar 效果图

Global site tag (gtag.js) - Google Analytics