2012-05-04 2 views
0

데이터베이스로 가져 오기 위해 스크럽하려고하는 플랫 파일이 있습니다. 레이아웃은 일관성이 없지만 필드 이름 (가변 길이 텍스트이지만 항상 9 단어 또는 구 중 하나) 다음에 자유 형식 텍스트 필드 (가변 길이는 최대 1024 바이트)로 구성됩니다. 1024 바이트 필드를 추출하여 필드 이름에 걸쳐 열로 정렬해야합니다.변수에 여러 String 메서드를 사용하는 적절한 방법은 무엇입니까?

입력 파일 : - : 각 라인을 읽고

foo-01 bunches of data 
foo bar01 more bunches of data including a bunch of notes 
foo-01 lots of data lives in this field 
foo18 monday notes 
    ...etc. 

출력 파일 구분은 공간 내 전략이이

foo-01;foo bar 01;foo18     (<-- header row) 
bunches of data; more bunches of data including a bunch of notes; ; 
lots of data lives in this field; ; notes 

을 손질. 줄이 9 개의 필드 이름 중 하나로 시작하면 해당 줄 위치의 분리 된 플랫 파일로 부분 문자열 (필드 이름 뒤의 첫 번째 문자부터 줄 끝의 마지막 문자까지)을 작성합니다.

이 코드는 작동

if(inputLine.startsWith("foo-01")) 
{ 
     String lineVal = inputLine.trim(); 
     int lVLen = lineVal.length(); 
     String outVal = lineVal.substring(17,lVLen); 
     String outValTrim = outVal.trim(); 
     System.out.println(evalVal+" "+inputLine+" "+outValTrim); 
    } 
    else 
    ...etc... 

그러나 질문을 제기한다.

고려 :

String outValTrim = inputLine.trim().substring(17,inputLine.trim().length()).trim(); 
  • 내가 사용할 수있는 방법의 최대 수는 무엇입니까? 예 : foo = Stringmethod1.Stringmethod2.StringMethod3()

  • 명세서의 메소드 순서에 대한 규칙이 있습니까?

  • 하나의 문장에서 여러 방법을 조합하는 것이 가장 좋은 방법은 무엇입니까? 나는 사람이 읽을 수있는 편이 아니라고 느낀다. 나는 효율성에 대해 확신하지 못한다.

+0

Peter는 귀하의 직접적인 질문에 잘 답변했습니다. 따로 따로 split 명령을 사용하여 데이터 필드를 더 읽기 쉽게 분할 할 수 있습니다. 예 : String headerAndData [] = inputLine.trim(). split ("", 1); – phatfingers

답변

2

방법의 최대 크기는 64K이며 이보다 더 많은 방법을 사용할 수 없습니다. 생각할 수있는 많은 방법으로 연결하지 않아도된다는 것을 알 수 있습니다.

String outValTrim = inputLine.trim().substring(17).trim() 

는 어떻게 가장 좋은 방법 인 것은 코드를 읽을 가능한 한 이해하기 쉽게 만드는 것입니다() 정확하지 ...

첫 트림을 생각한다.

효율이 가장 중요한 문제는 아니며 예를 들어 프로파일 러를 사용하여 이것이 문제의 원인이라고 생각하면 가독성을 고수하십시오.

관련 문제