在论坛上看到了一个问题,自己尝试写了一下。
问题描述:把字符串“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;
}