본질적으로 내가하고 싶은 일은 텍스트 파일에서 한 줄씩 읽어서 다음과 같이 형식을 지정합니다. 성/직위/중간/출생/사망일 (MM/DD/YYYY)자바에서 문자열의 이름과 날짜를 포맷/분리 하시겠습니까?
나는이 같은 날짜에 읽기 :이 같은
Month, day, year
Mon. day, year
Mon day, year
MMDDYY
M/D/year
M-D-year
와 이름 :
Last, Title First Middle (comma after name needed)
또는
을나는 정말 오랜 시간 동안이 일을 해왔으며 그걸 알아 채지 못했습니다. 아래는 이것을 이해하기위한 절망적 인 시도에서 많은 변화를 겪은 나의 꽤 지저분한 코드이다. 나를 도와 주려는 누군가 (나는 학생이다.) 여기에 읽혀진 이름의 예도있다. 지역 :
Roger Veium MAY 12, 1908 JUNE 2, 1984
McDermott, James D. Jan. 4, 1914 Jul 1, 1970
Amy Chamberlain Sep. 28, 1975 09-06-95
Gross, Adam M. 01-03-77
Joseph Lisota April 9, 1964
Joseph W. Eisel Sep 3, 1990
코드 :
public String[] readLines(String filename) throws IOException {
FileReader fileReader = new FileReader(filename);
BufferedReader bufferedReader = new BufferedReader(fileReader);
List<String> lines = new ArrayList<String>();
List<String> names = new ArrayList<String>();
String line = null;
String name = "";
int i;
int ind;
int indTemp;
int indTemp2;
boolean flag = false;
String[] monthsLong = {"JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"};
String[] monthsLongR = {" 01", "02", " 03", "04", "05", "06", "07", "08", " 09", "10", "11", "12"};
String[] monthsLow = {"JAN\\.", "FEB\\.", "MAR\\.","APR\\.", "MAY", "JUN\\.", "JUL\\.", "AUG\\.", "SEP\\.", "OCT\\.", "NOV\\.", "DEC\\."};
String[] monthsCaps = {" JAN", "FEB", " MAR", "APR", "MAY", "JUN", "JUL", "AUG", " SEP", "OCT", "NOV", "DEC"};
while ((line = bufferedReader.readLine()) != null) {
line = line.replaceAll("null", "");
line = line.replaceAll("-","/");
line = line.toUpperCase() ;
for(i = 0; i<12; i++)
{
line = line.replaceAll(monthsLong[i], monthsLongR[i]);
}
for(i = 0; i<12; i++)
{
line = line.replaceAll(monthsLow[i], monthsLongR[i]);
}
for(i = 0; i<12; i++)
{
line = line.replaceAll(monthsCaps[i], monthsLongR[i]);
}
line = line.replaceAll("\\s+", " ");
if (Character.toString(line.charAt(0)).equals(" "))
line = line.replaceFirst(" ", "");
/* name = line;
ind = name.indexOf(".");
indTemp = name.indexOf("0");
indTemp2 = name.indexOf("1");
if (ind > -1) {
System.out.println(" period");
ind = ind + 1;
flag = true;
}
if(flag == false) {
if(indTemp2 > indTemp){
ind = indTemp2 -1;
System.out.println(" 1");
}
if (indTemp > indTemp2){
ind = indTemp - 1;
System.out.println(" 2");
}
}
flag = false;
*/
// name = name.substring(0,ind);
lines.add(line);
}
bufferedReader.close();
return lines.toArray(new String[lines.size()]);
}
정말 지저분한 입력 파일입니다. 각 레코드 다음에 줄 바꿈이 있습니까 아니면 모든 것을 플랫 한 덤프입니까? – warwickf
줄 바꿈, 죄송합니다. 누군가 나를 위해 고쳐주었습니다. 사이트에 새로운 브랜드입니다. – javauserrrr
입력 파일을 다시 포맷 할 수있는 방법이 있습니까? – warwickf