出个基础题做做(一道面试题目) Sting str ="2006-04-15 02:31:04"要吧这个串变成 20060415023104 你会怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.由于格式固定,可以直接subString,然后再拼接成新串2.可以用正则表达式3.可以用simpleDateFormat来先parse解析字符串str,生成Date对象,然后再format成想要的字符串 简单 public static void main(String[] args) throws Exception{ String str ="2006-04-15 02:31:04"; str=str.replaceAll("-",""); str=str.replaceAll(":",""); str=str.replaceAll(" ",""); System.out.println(str);} 3.可以用simpleDateFormat来先parse解析字符串str,生成Date对象,然后再format成想要的字符串觉得这种是最好的。复杂度低、可维护性好 /* * @param setTime <br> * @return String <br> *<br> */ private String setDateFormat(String setTime){ // String nowDate = null; // SimpleDateFormat mySimpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); try{ // Date newdate = mySimpleDateFormat.parse(setTime); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT); _logger.debug("設定 :" + DATE_FORMAT); //書式 nowDate = simpleDateFormat.format(newdate); } catch(Exception e){ _logger.error(e); } return nowDate; } allright_flash() ( ) 信誉:100 Blog 2006-12-01 16:04:04 得分: 0 输出:20060415023104不过没有技术含量。不好意思,献丑了 =====估计面试分不会太高 To zeyuphoenix() ( ) 信誉:100 Blog 好像反了 class Test{ public static void main(String[] args) { String str ="2006-04-15 02:31:04"; String []result=str.split("\\D"); for(int i=0;i<result.length;i++) System.out.print(result[i]); }} 不好意思,上面理解成输出了public static String func(String str) //str ="2006-04-15 02:31:04";{ String s=""; String []result=str.split("\\D"); for(int i=0;i<result.length;i++) s+=result[i]; return s;} 这只是在考你知识有多深,replaceAll是最浅的,会用正则和format给招聘单位的印象会有加分 rg_nightkid() ( ) 信誉:100 Blog 2006-12-01 16:48:40 得分: 0 这只是在考你知识有多深,replaceAll是最浅的,会用正则和format给招聘单位的印象会有加分 ========= replaceAll用的好象就是正则吧 str = str.replaceAll("\\D+",""); Sting str ="2006-04-15 02:31:04"然后重新赋值str="20060415023104"应该是最快最不占内存的了 Sting str ="2006-04-15 02:31:04"然后重新赋值str="20060415023104"应该是最快最不占内存的了这方法嘎嘎好,呵呵 //用for循环删除掉不是数字字符的就好了,这样通用性好一些,不论你中间有什么别的字符.//-------------------------------------------------------------------------------//Test02.javapublic class Test02 { public static String parseNumber(String s) { String tempString=""; for(int i=0;i<s.length();i++) { if(s.charAt(i)<48||s.charAt(i)>57 )continue; tempString+=s.charAt(i); } return tempString; } public static void main(String[] args) { String s="2135-06-08 04:27:29"; s=parseNumber(s); System.out.println(s); } } public static String dateFormatConversion(String dateString){ //转换日期格式,2006-04-15 02:31:04到20060415023104 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date theDate=null; try{ theDate=sdf.parse(dateString); } catch(ParseException e){ System.out.println(e.getMessage()); } sdf.applyPattern("yyyyMMddHHmmss"); return sdf.format(theDate); }测试通过,上面有位也用的SimpleDateFormat,好像思路有点不一致,等下仔细看看,也希望能指点一下我的这个。首先SimpleDateFormat这个类还是挺重要的,因为日期格式是我们常常遇到的一个问题,面试出这种题相当正常。我的思路:本问题就是一个日期格式的转换,路径是这样的:字符串---转换(parse)为日期---更换pattern---把日期format为这种pattern下的字符串。还有就是官方文档上有各种日期格式的pattern的一个例子,看了那个就差不多能理解日期各种日期格式及其对应的pattern。 public class DateFormatConversion { public static String dateFormatConversion(String dateString) { //转换日期格式,2006-04-15 02:31:04到20060415023104 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date theDate = null; try { theDate = sdf.parse(dateString); } catch (ParseException e) { System.out.println(e.getMessage()); } sdf.applyPattern("yyyyMMddHHmmss"); return sdf.format(theDate); } public static void main(String[] args) { String haha = dateFormatConversion("2006-04-15 02:31:04"); System.out.println(haha); }} public class Untitled1 { public Untitled1() { } public static void main(String[] args) { String str ="2006-04-15 02:31:04"; System.out.println(str.replaceAll("[^0-9]","")); }}最短的 public class TimeToString { public static void main(String[] args) { String str ="2006-04-15 02:31:04"; str=str.replaceAll("[^0-9]",""); System.out.println(str); }}我觉得用人单位,应该是看你用不用最简单的方法,其实有时候,我们往往喜欢把简单的问题复杂化. 概念性问题,String类是不可变的对象...呵呵 String str ="2006-04-15 02:31:04";str = str.replaceAll("[^0-9]","");System.out.println(str);输出:20060415023104 str = str.replaceAll("\\D+",""); ok String str ="2006-04-15 02:31:04";str=str.replaceAll("^\\d",""); String str = "2005-05-01 01:11:21"; String s = ""; for(int i=0;i<str.length();i++) { if(str.charAt(i)!='-'&&str.charAt(i)!=':'&&str.charAt(i)!=' ') { s = s+str.charAt(i); } } 请问下str.split("\\D");中的"\\D"所指的是什么啊 方法1:return new SimpleDateFormat("yyyyMMddHHmmss").format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str));方法2:return str.replaceAll("[ :-]", ""); String str ="2006-04-15 02:31:04";str=str.replaceAll("-","");str=str.replaceAll(":","");str=str.replaceAll(" ","");System.out.println(str); 请问下str.split("\\D");中的"\\D"所指的是什么啊java.util.regex.Pattern里面说得很清楚啊。 Sting str ="2006-04-15 02:31:04"然后重新赋值str="20060415023104"应该是最快最不占内存的了这种办法也能想出来.厉害 SimpleFormat sf=new SimpleFormat("yyyyMMddHHmmss");String sst=sf.format(str); String sstr=str.replaceAll("[^0-9]","") return new SimpleDateFormat("yyyyMMddHHmmss").format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str)); to Char[],然后把非数字的ascii码干掉,然后 to String, over The Bean Builder哪位有?给我发一个 几个简单问题? 悬浮菜单及树问题 【MLDN J2SE部分--五子棋项目)】 Statement提示有歧义,就是说在eclipse中提示有java.beans.Statement与java.sql.Statement. 如何调用不同盘幅下的包。。 请教关于环境变量的两个问题 java中如何实现对word的操作 呵呵 ,请帮助 前辈 SQL语言中对日期/时间类型的字段和当前时间的比较 经典:Java及相关字符集编码问题研究 重复登陆的问题
2.可以用正则表达式
3.可以用simpleDateFormat来先parse解析字符串str,生成Date对象,然后再format成想要的字符串
public static void main(String[] args) throws Exception{
String str ="2006-04-15 02:31:04";
str=str.replaceAll("-","");
str=str.replaceAll(":","");
str=str.replaceAll(" ","");
System.out.println(str);
}
* @param setTime <br>
* @return String <br>
*<br>
*/
private String setDateFormat(String setTime){
//
String nowDate = null;
//
SimpleDateFormat mySimpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
try{
//
Date newdate = mySimpleDateFormat.parse(setTime);
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat(DATE_FORMAT);
_logger.debug("設定 :" + DATE_FORMAT);
//書式
nowDate = simpleDateFormat.format(newdate);
}
catch(Exception e){
_logger.error(e);
}
return nowDate;
}
输出:20060415023104
不过没有技术含量。不好意思,献丑了
=====
估计面试分不会太高
{
public static void main(String[] args)
{
String str ="2006-04-15 02:31:04";
String []result=str.split("\\D");
for(int i=0;i<result.length;i++)
System.out.print(result[i]);
}
}
public static String func(String str) //str ="2006-04-15 02:31:04";
{
String s="";
String []result=str.split("\\D");
for(int i=0;i<result.length;i++)
s+=result[i];
return s;
}
这只是在考你知识有多深,replaceAll是最浅的,会用正则和format给招聘单位的印象会有加分
========= replaceAll用的好象就是正则吧
然后重新赋值
str="20060415023104"应该是最快
最不占内存的了
然后重新赋值
str="20060415023104"应该是最快
最不占内存的了这方法嘎嘎好,呵呵
//-------------------------------------------------------------------------------
//Test02.java
public class Test02
{
public static String parseNumber(String s)
{
String tempString="";
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)<48||s.charAt(i)>57 )continue;
tempString+=s.charAt(i);
}
return tempString;
} public static void main(String[] args)
{
String s="2135-06-08 04:27:29";
s=parseNumber(s);
System.out.println(s);
}
}
//转换日期格式,2006-04-15 02:31:04到20060415023104
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date theDate=null;
try{
theDate=sdf.parse(dateString);
}
catch(ParseException e){
System.out.println(e.getMessage());
}
sdf.applyPattern("yyyyMMddHHmmss");
return sdf.format(theDate);
}
测试通过,上面有位也用的SimpleDateFormat,好像思路有点不一致,等下仔细看看,也希望能指点一下我的这个。
首先SimpleDateFormat这个类还是挺重要的,因为日期格式是我们常常遇到的一个问题,面试出这种题相当正常。
我的思路:
本问题就是一个日期格式的转换,路径是这样的:字符串---转换(parse)为日期---更换pattern---把日期format为这种pattern下的字符串。
还有就是官方文档上有各种日期格式的pattern的一个例子,看了那个就差不多能理解日期各种日期格式及其对应的pattern。
//转换日期格式,2006-04-15 02:31:04到20060415023104
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date theDate = null;
try {
theDate = sdf.parse(dateString);
} catch (ParseException e) {
System.out.println(e.getMessage());
}
sdf.applyPattern("yyyyMMddHHmmss");
return sdf.format(theDate);
} public static void main(String[] args) {
String haha = dateFormatConversion("2006-04-15 02:31:04");
System.out.println(haha);
}
}
public Untitled1() {
}
public static void main(String[] args) {
String str ="2006-04-15 02:31:04";
System.out.println(str.replaceAll("[^0-9]",""));
}
}
最短的
public static void main(String[] args) {
String str ="2006-04-15 02:31:04";
str=str.replaceAll("[^0-9]","");
System.out.println(str);
}
}
我觉得用人单位,应该是看你用不用最简单的方法,其实有时候,我们往往喜欢把简单的问题复杂化.
str = str.replaceAll("[^0-9]","");
System.out.println(str);输出:
20060415023104
ok
str=str.replaceAll("^\\d","");
String s = "";
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)!='-'&&str.charAt(i)!=':'&&str.charAt(i)!=' ')
{
s = s+str.charAt(i);
}
}
return new SimpleDateFormat("yyyyMMddHHmmss").format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str));方法2:
return str.replaceAll("[ :-]", "");
str=str.replaceAll("-","");
str=str.replaceAll(":","");
str=str.replaceAll(" ","");
System.out.println(str);
然后重新赋值
str="20060415023104"应该是最快
最不占内存的了
这种办法也能想出来.厉害
String sst=sf.format(str);