正则表达式格式化Java

时间:2015-02-12 22:07:40

标签: java regex

我正在努力想出一个正则表达式来格式化我的输入文件。 输入文件示例:

john m smith 12121993 paul bright 1111882. 

我想要的输出是

John M Smith 12/12/1993 Paul Bright 11/11/1882.

代码:

import java.util.regex.*;
public class FormatNames{
public static void main(String[] args)throws IOException{

    String inputFileName = "input";
    String outputFileName = "output.txt";
    String regex = "?";


    File inputFile = new File(inputFileName);
    Scanner in = new Scanner(inputFile);
    PrintWriter out = new PrintWriter(outputFileName);

    // Read input and write output
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(inputFileName);
    while(m.find()){
        if(m.group().length() !=0){
            out.print(m.group());
        }
    }


    in.close();
    out.close();
}

}

1 个答案:

答案 0 :(得分:2)

您的问题由两部分组成:

1)查找包含文本字符串中日期信息的数字字符串。

2)将其转换为日期。

这是我的解决方案

import java.text.SimpleDateFormat;
import java.util.StringTokenizer;


class FormatNames
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String s = "john m smith 12121993 paul bright 1111882. ";
        StringTokenizer st= new StringTokenizer(s, " .");   


        SimpleDateFormat newFormat = new SimpleDateFormat("dd/MM/yyyy");


        while(st.hasMoreTokens()) 
        {
            String string1= st.nextToken();
            Integer date = null;
            try
            {
                date = Integer.parseInt(string1);

            }
            catch (Exception e)
            {

            }
            if (date != null)
            {
                String formattedDate = newFormat.format(date);
                System.out.print(formattedDate);
            }
            else
            {
                System.out.print(string1);
            }
            System.out.print(" ");
        }
    }
}

你对“。”有点问题。在字符串末尾丢失,但我相信你可以自己想出那个。这在很大程度上取决于导入格式是什么样的,以及它是否有任何变化。