如何拆分字符串值并重新排列字符

时间:2011-09-23 15:48:59

标签: java

所以我发现我必须写一个交换方法?唯一的问题是我一直在看的代码有点超过我的头脑。

我从xml文件中获取一个值,例如“20120411”我希望它一旦传递到另一个字符串是2012年4月11日,或至少是04/11/12。除了java之外,我已经找到了几乎所有其他语言的简单方法。如果它足够简单,可以让某人向我展示完成此任务的代码,或者指出我正确的方向,我将不胜感激!

3 个答案:

答案 0 :(得分:5)

查看使用SimpleDateFormat对象。在这个论坛中有很多如何使用它的例子,所以一点点搜索会给你带来财富。如果你看一遍并且仍然卡住,那么你应该考虑向我们展示你的尝试并告诉我们什么对你不起作用,我们很可能能够轻松地帮助你。

要尝试的格式字符串包括“yyyyMMdd”。您将使用此String构造SDF对象,解析xml String,从而将其转换为Date对象。您将使用具有不同模式String的第二个SDF对象(可能是“MMMM dd,yyyy”)将Date格式化为不同的String。再来一次,试一试!

如,

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SdfTest {
   public static void main(String[] args) {
      SimpleDateFormat sdfInput = new SimpleDateFormat("yyyyMMdd");
      SimpleDateFormat sdfOutput = new SimpleDateFormat("MMMM dd, yyyy");

      try {
         Date date = sdfInput.parse("20120411");
         String output = sdfOutput.format(date);
         System.out.println(output);

      } catch (ParseException e) {
         e.printStackTrace();
      }
   }
}

答案 1 :(得分:1)

这需要“20080105”并返回“01/05/2008”。

StringBuffer b = new StringBuffer(dateStr);
b.append(b.substring(0, 4)).delete(0, 4); // put year at end
b.insert(2, "/");
b.insert(5, "/");

答案 2 :(得分:1)

如果您只想重新排列字符,则可以进行替换:

 String dateString = "20120411".replaceAll("\\d{2}(\\d{2})(\\d{2})(\\d{2})", "$2/$3/$1");  // outputs: 04/11/12