2014-06-23 5 views
-4

이 코드를 가지고 텍스트 파일을 배열 목록으로 읽어 들이고 배열 목록을 출력합니다. 파일을 읽고 배열 목록에 저장하고 대문자로 소문자로 만들고 모든 문장 부호를 제거하려면 어떻게해야합니까? 나는 인터넷 전체를 조사해 왔지만 어떤 해결책도 찾을 수 없었다. replaceAll 메소드를 사용하는 Java

예를 들어 텍스트 파일은 다음과 같습니다

It's a SuNnY day Today! 

그 결과는 다음과 같아야합니다

its a sunny day today 

.

import java.io.*; 
import java.util.*; 

public class junk 
{ 
    private static ArrayList<String> list = new ArrayList<String>(); 
    public static void main (String[] args) 
    { 
     try { 
      Scanner s = new Scanner(new File("test.txt")); 

      while (s.hasNext()) { 
       list.add(s.next()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace();    
     } 

     int n = list.size(); 
     for(int i = 0; i < n ; i++) { 
      System.out.println(list.get(i)); 
     } 
    } 
} 

코드 행 여기서 일하는 및 문장 부호를 제거하지와 소문자를 만들지 만 문자열의 = 말할 경우에만 작동 "어쩌구 ;;;"

String s1 = s.replaceAll("\\p{Punct}|\\d","").toLowerCase(); 

내 배열 목록에 어떻게 적용 할 수 있습니까?

+2

목록에있는 파일을 읽는 동안 이러한 변형을 수행 할 수 있습니다. – Makoto

+1

'String' 메서드를 통해 무엇을하는지 배우기 시작 했습니까? –

+1

우리는 당신을 위해 숙제를하러 온 것은 아니지만 여기에 힌트가 있습니다 : try toLowerCase()와 replace() –

답변

0

죄송합니다. 예제 코드를 작성하는 동안 업데이트 된 질문입니다. 다시 질문을하면 replaceAll이 적용되지만 ArrayList에 다시 넣지는 않는다는 것을 의미합니다. repalceAll은 새 String 객체를 생성하고 배열의 객체에 영향을주지 않습니다. 그래서 당신은 repaceAll을 파일로부터 읽어 들이고 ArrayList 객체에 "추가"하기 전에 필요합니다.

======================== 당신은 할 수있다 구두점의 판사를 조정해야합니다,이 코드를 사용해보십시오.

public void convert(String filename) throws FileNotFoundException, 
     IOException { 
    List<String> list = new ArrayList<String>(); 
    BufferedReader reader = null; 
    try { 
     reader = new BufferedReader(new FileReader(filename)); 
     String s = reader.readLine(); 
     while (s != null) { 
      // should work in this loop 
      String s1 = s.replaceAll("\\p{Punct}|\\d","").toLowerCase(); 
      list.add(s1.toString()); 

     } 
    } finally { 
     if (reader != null) 
      reader.close(); 
    } 

    for (String s : list) { 
     // will not work in this loop 
     //String s1 = s.replaceAll("\\p{Punct}|\\d","").toLowerCase(); 
    // list.add(s1.toString()); 

     System.out.println(s); 
    } 
} 
관련 문제