2、数据转换String相关

来源:互联网 发布:小而美的java开源项目 编辑:程序博客网 时间:2024/06/13 05:44

参看:http://www.cnblogs.com/andy2005/archive/2006/07/24/458564.html

           http://www.cnblogs.com/bmbm/archive/2011/12/06/2342264.html

1、各种数据转换为String

   将整数 int 转换成字串 String 
A. 有叁种方法:
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
注: Double, Float, Long 转成字串的方法大同小异.

 Date-->String

System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(new Date()).toString());


反向转换:
通过类包装器
eg1:int i=Integer.parseInt(“123”)
说明:此方法只能适用于字符串转化成整型变量
eg2: float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。

String-->Date

String s="2015-12-12";
SimpleDateFormat sf= new SimpleDateFormat("yyyy-MM-dd");
Date d = sf.parse(s);
System.out.println(d);



判断字符串中是否包含某一个子串

s2.indexOf(s1)>=0        以s1第一次出现位置判断

s2.contains(s1)          包含,返回boolean

判断字符串是否为空

s2.length==0;

s2.isEmpty();

其他常用

startsWith/endsWith/equals/equalsIgnorecase/toUpperCsae/toLowerCsae/trim/replace(oldchar,newchar)/split/subString(begin,end)/

compareTo(顺序比较,相等值为0),equals()方法比较字符串对象中的字符,==比较两个对象是否引用的同一实例。


字符数组--->String

char[]   data={'a','b','c'};   
String  s=new   String(data);

字符串数组--->String

String[] str = {"abc", "bcd", "def"};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < str.length; i++){
 sb. append(str[i]);
}
String s = sb.toString();

将字符串转成字符组

String s= "skx";
char[] data=s.toCharArray();


String.format()方法

参看:http://www.cnblogs.com/linjiqin/archive/2013/06/21/3147943.html

1、转换符%s: 字符串类型,如:"ljq"%b: 布尔类型,如:true%d: 整数类型(十进制),如:99%f: 浮点类型,如:99.99%%: 百分比类型,如:%%n: 换行符 */@Testpublic void test1(){ String str=null;    str=String.format("Hi, %s", "林计钦"); // 格式化字符串    System.out.println(str); // 输出字符串变量str的内容    System.out.printf("3>7的结果是:%b %n", 3>7);    System.out.printf("100的一半是:%d %n", 100/2);    System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85);    System.out.printf("上面的折扣是%d%% %n", 85);}/*2、常见日期时间格式化c: 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007F: "年-月-日"格式,如:2007-10-27D: "月/日/年"格式,如:10/27/07r: "HH:MM:SS PM"格式(12时制),如:02:25:51 下午T: "HH:MM:SS"格式(24时制),如:14:28:16R: "HH:MM"格式(24时制),如:14:28 */@Testpublic void test2(){    Date date=new Date(); // 创建日期对象    System.out.printf("全部日期和时间信息:%tc%n", date);//格式化输出日期或时间    System.out.printf("年-月-日格式:%tF%n", date);    System.out.printf("月/日/年格式:%tD%n", date);    System.out.printf("HH:MM:SS PM格式(12时制):%tr%n", date);    System.out.printf("HH:MM:SS格式(24时制):%tT%n", date);    System.out.printf("HH:MM格式(24时制):%tR%n", date);}/*3、格式化日期字符串b或者h: 月份简称,如中:十月英:Oct B: 月份全称,如中:十月英:October  a: 星期的简称,如中:星期六英:Sat  A: 星期的全称,如:中:星期六英:Saturday C: 年的前两位数字(不足两位前面补0),如:20y: 年的后两位数字(不足两位前面补0),如:07Y: 4位数字的年份(不足4位前面补0),如:2007j: 一年中的天数(即年的第几天),如:300 m: 两位数字的月份(不足两位前面补0),如:10d: 两位数字的日(不足两位前面补0),如:27e: 月份的日(前面不补0),如:5 */@Testpublic void test3(){       Date   date=new  Date();                                                                       // 创建日期对象    String str=String.format(Locale.US,"英文月份简称:%tb",date);      // 格式化日期字符串    System.out.println(str);                                                                              // 输出字符串内容    System.out.printf("本地月份简称:%tb%n",date);    str=String.format(Locale.US,"英文月份全称:%tB",date);    System.out.println(str);    System.out.printf("本地月份全称:%tB%n",date);    str=String.format(Locale.US,"英文星期的简称:%ta",date);    System.out.println(str);    System.out.printf("本地星期的简称:%tA%n",date);    System.out.printf("年的前两位数字(不足两位前面补0):%tC%n",date);    System.out.printf("年的后两位数字(不足两位前面补0):%ty%n",date);    System.out.printf("一年中的天数(即年的第几天):%tj%n",date);    System.out.printf("两位数字的月份(不足两位前面补0):%tm%n",date);    System.out.printf("两位数字的日(不足两位前面补0):%td%n",date);    System.out.printf("月份的日(前面不补0):%te",date);}/*4、格式化时间字符串H: 2位数字24时制的小时(不足2位前面补0),如:15I: 2位数字12时制的小时(不足2位前面补0),如:03k: 2位数字24时制的小时(前面不补0),如:15l: 2位数字12时制的小时(前面不补0),如:3M: 2位数字的分钟(不足2位前面补0),如:03S: 2位数字的秒(不足2位前面补0),如:09L: 3位数字的毫秒(不足3位前面补0),如:015N: 9位数字的毫秒数(不足9位前面补0),如:562000000 p: 小写字母的上午或下午标记,如:中:下午英:pm  z: 相对于GMT的RFC822时区的偏移量,如:+0800Z: 时区缩写字符串,如:CSTs: 1970-1-1 00:00:00 到现在所经过的秒数,如:1193468128Q: 1970-1-1 00:00:00 到现在所经过的毫秒数,如:1193468128984  */@Testpublic void test4(){    Date date=new Date();                               // 创建日期对象    System.out.printf("2位数字24时制的小时(不足2位前面补0):%tH%n",date);    System.out.printf("2位数字12时制的小时(不足2位前面补0):%tI%n",date);    System.out.printf("2位数字24时制的小时(前面不补0):%tk%n",date);    System.out.printf("2位数字12时制的小时(前面不补0):%tl%n",date);    System.out.printf("2位数字的分钟(不足2位前面补0):%tM%n",date);    System.out.printf("2位数字的秒(不足2位前面补0):%tS%n",date);    System.out.printf("3位数字的毫秒(不足3位前面补0):%tL%n",date);    System.out.printf("9位数字的毫秒数(不足9位前面补0):%tN%n",date);    String str=String.format(Locale.US,"小写字母的上午或下午标记(英):%tp",date);    System.out.println(str);                          // 输出字符串变量str的内容    System.out.printf ("小写字母的上午或下午标记(中):%tp%n",date);    System.out.printf("相对于GMT的RFC822时区的偏移量:%tz%n",date);    System.out.printf("时区缩写字符串:%tZ%n",date);    System.out.printf("1970-1-1 00:00:00 到现在所经过的秒数:%ts%n",date);    System.out.printf("1970-1-1 00:00:00 到现在所经过的毫秒数:%tQ%n",date);}}

   String,StringBuffer与StringBuilder的区别

String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)

在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

Java.lang.StringBuffer线程安全的可变字符序列。StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。

例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含“startle”,而 z.insert(4, "le") 将更改字符串缓冲区,使之包含“starlet”。

java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。


StringHelper

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.UUID;import org.loushang.bsp.security.context.GetBspInfo;import com.sz.common.util.DateUtil;import com.sz.common.util.StringUtil;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;/** * String帮助 * @author Meteor * */public class StringHelper {/** * 日期格式的加减 * @throws ParseException * @param format 需要转的格式 * @param type(年、月、日) * @param len(增加和减少的值) * @param str * @return str * @throws ParseException */public static String dateAdd(String type,int len,String str,String format) throws Exception {SimpleDateFormat sdf=new SimpleDateFormat(format);if(StringUtil.isEmpty(str)){str=DateUtil.getCurrentDate();}Date dt= sdf.parse(str);Calendar rightNow = Calendar.getInstance();        rightNow.setTime(dt);        if(type.indexOf("年")>-1){        rightNow.add(Calendar.YEAR,len);//日期加减        }else if(type.indexOf("月")>-1){        rightNow.add(Calendar.MONTH,len);//日期加减        }else if(type.indexOf("日")>-1){        rightNow.add(Calendar.DAY_OF_YEAR,len);//日期加减        }        Date dt1=rightNow.getTime();        String reStr = sdf.format(dt1);        return reStr;}public static int toInt(String str){if(isEmpty(str)){return 0;}else{try{return Integer.valueOf(str).intValue();}catch(NumberFormatException e){return 0;}}}public static int toInt(String str,int num){if(isEmpty(str)){return num;}else{try{return Integer.valueOf(str).intValue();}catch(NumberFormatException e){return num;}}}public static boolean isEmpty(String str){ if(null==str||"null".equals(str)||"".equals(str)||0==str.length()){return true;}else return false;}public static boolean isNotEmpty(String str){ return !isEmpty(str);}/** * 将对象转换为字符串 * @param obj * @return String */public static String ToString(Object obj){if(obj==null)return "";return obj.toString();}/** * 将对象转换为字符串 * @param obj * @return String */public static String ToString(Object obj,String isNullToShow){if(obj==null) return isNullToShow;return obj.toString();}/**      * 获取字符串的长度,中文占一个字符,英文数字占半个字符      *      * @param value  指定的字符串                * @return 字符串的长度      */      public static double length(String value) {          double valueLength = 0;          String chinese = "[\u4e00-\u9fa5]";          // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1           for (int i = 0; i < value.length(); i++) {              // 获取一个字符               String temp = value.substring(i, i + 1);              // 判断是否为中文字符               if (temp.matches(chinese)) {                  // 中文字符长度为1                   valueLength += 1;              } else {                  // 其他字符长度为0.5                   valueLength += 0.5;              }          }          //进位取整           return  Math.ceil(valueLength);      }    // 将 s 进行 BASE64 编码    public static String getBASE64(String s) {   if (s == null) return null;   return (new BASE64Encoder().encode(s.getBytes()));   }       //base64解密public static String getFromBASE64(String s) { if (s == null) return null; BASE64Decoder decoder = new BASE64Decoder(); try { byte[] b = decoder.decodeBuffer(s); return new String(b); } catch (Exception e) { return null; } }    //UUID码public static String getUUID32() { return UUID.randomUUID().toString().replace("-", "");}/** * 将对象转换为字符串 且去掉含有":"和","; * @param obj * @return String */public static String ToStringFormat(String obj){if(obj==null)return "";return obj.toString().replace(":","").replace(",","");}/*** 从身份证获取出生日期* @param cardNumber 已经校验合法的身份证号* @return Strig YYYY-MM-DD 出生日期*/public static String getBirthDateFromIdCard(String cardNumber){if(StringUtil.isEmpty(cardNumber)){return "1900-01-01";}String card = cardNumber.trim();    String year;    String month;    String day;    if (card.length()==18){ //处理18位身份证        year=card.substring(6,10);        month=card.substring(10,12);        day=card.substring(12,14);    }else{ //处理非18位身份证    year=card.substring(6,8);        month=card.substring(8,10);        day=card.substring(10,12);        year="19"+year;            }    if (month.length()==1){        month="0"+month; //补足两位    }    if (day.length()==1){        day="0"+day; //补足两位    }    return year+"-"+month+"-"+day;}/** * 审批意见自动添加审批人和审批时间信息 * @param str * @return */public static String resetYj(String str){if(!StringUtil.isEmpty(str)){str += "(" + GetBspInfo.getBspInfo().getUserName() + "-" + DateUtil.getCurrentDateTime() + ")";}return str;}}


0 0