我正在努力想出一个正则表达式来格式化我的输入文件。 输入文件示例:
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();
}
}
答案 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(" ");
}
}
}
你对“。”有点问题。在字符串末尾丢失,但我相信你可以自己想出那个。这在很大程度上取决于导入格式是什么样的,以及它是否有任何变化。