JAVA 字符串格式化

在论坛上看到了一个问题,自己尝试写了一下。
问题描述:把字符串“2017/12/12”改为“20171212”,“2017/2/3”改为“20170203”等等
代码实现:

package com.wonders;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DeleteCharacter {

	public static void main(String[] args) {

//		String s = "2017/12/31" ;
//		String s = "2017/12/1";
//		String s = "2017/1/31";
//		String s = "2017/1/3";
//		String s = "";
		String s = "ascadvsdas";
		if ( !s.equals("") && s != null) {
			if (isNumber(s.replace("/", ""))) {
				System.out.println(parseString(s));
			}else {
				 System.out.println("输入的数据格式不正确");
			}
		}else {
			System.out.println("empty string");
		}
	}
	/**
	 * 判断是否是数字
	 * @param str
	 * @return
	 */
	public static boolean isNumber(String str){ 
		   Pattern pattern = Pattern.compile("[0-9]*"); 
		   Matcher isNum = pattern.matcher(str);
		   if( !isNum.matches() ){
		       return false; 
		   } 
		   return true; 
		}
	
	/**
	 * 对字符串进行格式化
	 * @param str
	 * @return
	 */
	public static String parseString(String str){
		String result = null;
		StringBuffer sb = new StringBuffer();
		try {
				int first = str.indexOf("/");//第一个/位置
				int last = str.lastIndexOf("/");//第二个/位置
				String firstStr = str.substring(first+1, last);
				String lastStr = str.substring(last+1,str.length());
				if ((Integer.parseInt(firstStr) < 10) && (Integer.parseInt(lastStr) >= 10)) {
					result = sb.append(str.substring(0, first)).append("0").append(str.substring(first+1)).toString();
				}else if ( (Integer.parseInt(firstStr) >= 10) && Integer.parseInt(lastStr) < 10) {
					result = sb.append(str.substring(0, last)).append("0").append(str.substring(last+1)).toString();
				}else if ((Integer.parseInt(firstStr) < 10 ) && (Integer.parseInt(lastStr) < 10)) {
					result = sb.append(str.substring(0, first)).append("0").append(str.substring(first+1,last)).append("0").append(str.substring(last)).toString();
				}else if ((Integer.parseInt(firstStr) >= 10 ) && (Integer.parseInt(lastStr) >= 10)) {
					result = str;
				}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result.replace("/", "");
	}
}

别人的实现(比我的简单,直接利用了simpleDateFormat,但是他直接是把字符串当日期类型处理,如果输入的不是日期类的格式就会直接报错)

	public static void main(String[] args) {
		String s = "2017/2/3";
		String s2 = "2017/2/13";
		String s3 = "2017/12/13";
		String s4 = "";
		String s5 = "20ss17/12/13";
		System.out.println(parse(s));
		System.out.println(parse(s2));
		System.out.println(parse(s3));
		System.out.println(parse(s4));
		System.out.println(parse(s5));
	}
	
	public static String parse(String s){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
		String result = null;
		try {
			Date d = sdf.parse(s);
			result = sdf2.format(d);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return result;
	}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值