2014-02-27 2 views
0

나는 이것을 해봤지만 다른 문제가 생겼다. 끝에 "숙제 1 : 89"의 숫자 만 추출하려면 .txt 파일에 있습니다. 나는 보통 ". \\\"(\\\ "[\ D]", "") "* .replaceAll을 사용했다. 하지만 시간이 지나면 콜론 (예 : 1) 앞에있는 숫자가 그대로 유지됩니다 ... 어떤 해결책도 보이지 않습니다.빈 공간으로 바꾸기

는 다음과 같아야합니다

 while (dataSc.hasNextLine()) { 
       String data = dataSc.nextLine(); 
       ArrayData.add(i, data); 

     if (data.contains("Homework ")) { 
      idData.add(a, data); 
      idData.set(a, (idData.get(a).replaceAll("[\\D]", ""))); 

출력 존재, 그냥 "89"와 새로운 캐릭터 ... 당신의 질문을 편집

+0

시도해 보는 코드, 입력, 출력 및 예상 출력을 사용하여 질문을 편집 할 수 있습니까? 우리가 그렇게한다면 훨씬 더 많은 도움을 줄 수 있습니다. 감사합니다 내가 원하는 것을 이해하면 ":"로 구분하고 두 번째 토큰을 얻을 수 있습니다. line = "Homework 1 : 89"이면'line.split (":")'을 할 수 있으며 반환 된 배열의 두 번째 요소가됩니다. – TheOneWhoPrograms

+0

숙제의 필수적인 부분 일 수 있으므로 정규 표현식을 살펴보아야합니다. http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html #sum – Andy

답변

2

감사합니다.

당신은 단순히 단어 숙제가있을 때마다 끝을 얻으려고 노력하고 있고 일관된 형식 믿을 수있는 경우는 다음을 수행 할 수 있습니다 : 당신의 코드에서 보는 경우

에게
String[] tokens = data.split(": "); 
System.out.println(tokens[1]); 

그래서 당신이 것을 데이터에서 콜론 뒤에있는 숫자 만 얻으려는 if 문에이 값을 넣고 싶습니다.

코드는 문자열을 여러 구성 요소로 나눠서 ":"이 표시 될 때마다 끊습니다. 당신의 예에서

1 : "숙제 1"

2 : "89"

그래서 "숙제는 1 : 89"두 개의 "토큰"으로 데이터를 파괴합니다 인덱스 코드 아래 0

+0

글쎄, 논리가 뒤 따르는 것을 보았습니다. 그러나 조금 잃어 버렸습니다 ... 정확히 첫 줄을 써야 할 필요가 있습니다. 코드를 통해 일반적인 용도로 사용하는 것 같습니다. 맞습니까? – Heneko

+0

@Heneko 제 대답이 확장되었습니다. 충분한 지 알려주세요. – TheOneWhoPrograms

+0

흠 .. 그래서 내가해야 할 일은 코드 조각을 사용하고, ArrayList에 값 1을 저장하고 싶습니다. array.add (토큰 [1]), – Heneko

0

사용에서 시작하기 때문에 우리는 변수 tokens[1] 액세스 토큰 배열에 접근

1) String str="Homework 1: 89"; 
     str = str.replaceAll("\\D+",""); 
     2) String str="sdfvsdf68fsdfsf8999fsdf09"; 
      String numberOnly= str.replaceAll("[^0-9]", ""); 
     System.out.println(numberOnly); 
+0

어떻게 OP 문제를 해결할 수 있습니까? 그것은 OP가 지금까지 그것을하는 것과 정확히 같은 방식입니다. '[\\ D]'를'\\ D' 또는'[^ 0-9]'로 바꾸면됩니다.이 경우에는 같은 것을 나타냅니다. – Pshemo

관련 문제