[자바] 수정해야되는데 어디를 어떻게 수정해야 할지를 모르겠습니다.

조회수 907회

코드가 길어서 따로 봐주실 수 있을까요?

밑에는 일부분만 올려 놓아 습니다.

기존 텍스트파일을 불러서 안에 있는 내용을 한글로 변환되게끔 만든 코드입니다.

123,45 원이라는 내용이 있으면

만이천삼백사십오원이라고 하고싶은데요 백이십삼사십오원이라고 바뀝니다.

프로퍼티에 (,) 특수문자는 사라지게 해놨는데. 왜 안될까요?..

프로퍼티에 있는 내용을 먼저 치환하고

그다음 숫자를 한글로 바꾸게끔 설정 한거 같은데요

public int formatFile(LinkedProperties props, String filePath, String changePath,String fileName){

    int resultCode = 0;

    BufferedReader br = null;
    BufferedWriter bw = null;

    try {

        br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath+"/"+fileName), "utf-8"));
        bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(changePath+fileName), "utf-8"));

        String s = null;

        while ((s = br.readLine()) != null) {

            // 숫자를 한글로 변경하기
            // charAt를 이용하여 숫자가 아니면 넘기는 식으로 해서 뽑아 낼 수 있다.
            // 문자열에서 찾아낸 숫자를 변화할 타이밍을 찾기 위한 변수
            // 필요이유 : 한문장에 여러개의 숫자가 있을 수 있기 때문에.
            boolean intStart = false;
            String number = "";

            String plainText = s;

            //프로퍼티에 선언된 문자들 치환하기
            Enumeration<Object> iterator = props.keys();
            while (iterator.hasMoreElements()) {
                String searchWord = (String) iterator.nextElement();

                //변환시킬 내용이 있는지 여부 판단
                if(plainText.contains(searchWord)){
                //if(s.matches(searchWord)){
                    resultCode = 1;
                }
                plainText = plainText.replace(searchWord, props.getProperty(searchWord));

            }


            //한글자씩 검사
            for (int i = 0; i < s.length(); i++) {

                //System.out.println(s);

                if (48 <= s.charAt(i) && s.charAt(i) <= 57) {

                    intStart = true;
                    number += s.charAt(i);

                //현재 글자가 숫자가 아니면서, 이전글자가 숫자였으면(intStart=true)
                } else if (intStart) {

                    resultCode = 1;

                    //숫자변환시작
                    String numberString = changeNumber(number);
                    plainText = plainText.replaceFirst(number, numberString+ ""); //원래 " "

                    //사용했던 변수 초기화
                    intStart = true;
                    number = "";
                }

            }

            //마지막이 숫자로 끝난 경우
            if(number.length() > 0){

                resultCode = 1;

                //숫자변환시작
                String numberString = changeNumber(number);
                plainText = plainText.replaceFirst(number, numberString);
                //사용했던 변수 초기화
                intStart = true;
                number = "";
            }               

            // 변환된 내용 넣기
            bw.write(plainText);
            bw.newLine();


            }
  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)