2017-04-04 5 views
1

파일에서 번호 매겨진 패턴을 찾고 싶습니다. 클래스에서 다른 메서드를 사용하여 원하는 숫자 형식으로 변환하고 싶습니다.) ...문자열을 텍스트 파일의 일부로 바꿉니다.

내 문제는 새로운 숫자 형식을 이전 숫자 형식으로 바꿔서 (나는 모르겠다) 새로운 파일에 쓰고 싶다는 것이다.

String INPUT = "D:\\input.txt"; 
    String OUTPUT = "D:\\output.txt"; 
    String all = ""; 
    Pattern regexp = Pattern.compile("\"(\\d{14}.{2}\\d{4})\""); 
    try (BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(INPUT), "UTF-8"))) { 
     String CurrentLine; 
     while ((CurrentLine = in.readLine()) != null) { 
      Matcher matcher = regexp.matcher(CurrentLine); 
       if (matcher.find()) { 
        String number1 = CurrentLine.substring(10,20); 
        String number2 = CurrentLine.substring(30,40); 
        number1 = convertor(number1); 
        number2 = convertor(number2); 
       } 
      all = all + sCurrentLine + "\r\n"; \\create output to use for BufferedWriter 
     } 

BTW 위의 코드 내 전체 코드의 (그것이 명백으로) 단지 일부입니다.

+0

컨버터가 어떤 역할을하는지 명확하지 않습니다 ... – freedev

+0

숫자 형식이 다음과 같다고 가정합니다. 23 + 3 변환기 메서드는 숫자를 합하여 26 + 0을 반환합니다. 입력은 20 자, 변환기 출력도 20 자입니다. – aminspy12

답변

0

출력을 저장하려면 루프 끝에서 이것을 실행하십시오.

Files.write(Paths.get(OUTPUT), all.getBytes(), StandardOpenOption.CREATE); 

matcher 개체도 그룹 (\d{14}.{2}\d{4})가 일치 한 위치를 반환한다. 코드의이 부분을 두 번 확인하여 자신을 돕는 것이 좋습니다.

matcher.start(1)을 사용하면 이전 일치 작업 중에 그룹이 캡처 한 하위 시퀀스의 시작 인덱스를 갖게됩니다.

+0

나는 그 줄 (숫자가있는 곳)에서 문자열이 어디에 있는지 정확히 알고있다. 이 matcher.start (1)가 변환 된 패턴을 대체 할 수있게 도와 주나요? – aminspy12

+0

그것은 단지 제안이었습니다 ... 당신이 이미 그렇게하는 법을 이미 잘 알고 있다면 – freedev

+0

감사합니다. 그러나 어떻게 변환 된 숫자를 원래의 숫자로 대체 할 수 있습니까? – aminspy12

관련 문제