2017-05-06 8 views
0

텍스트 데이터가 포함 된 거대한 텍스트 파일이 있습니다. 파일의 각 행에는 12 자의 데이터가 들어 있습니다. 맵 축소 작업을 사용하여 해당 파일에서 5 자의 부분 문자열을 찾아야합니다.연속 스트림에 대한 작업 축소 작업

입력 파일.

abcdefghijkl 
kahfdjshjsdh 
sdfkjsdjkjks 

값은

cdefg 

'CDEFG'할 수있는 파일의 아무 곳이나 발생을 검색 할 수 있습니다. 그것은 두 줄에있을 수 있습니다. 그래서 현재 줄의 마지막 두 글자와 다음 줄의 다음 글자의지도를 만드는 법을 모르겠습니다.

+1

지금까지 해보신 것은 무엇입니까? – bouteillebleu

+0

@bouteillebleu 필자는 입력 문자열을 한줄 씩주고 5 줄로 그 줄을 나누어주는 맵핑 프로그램을 만들었지 만 입력 문자열의 마지막 2 문자를 처리하는 방법을 모르겠습니다. –

+0

'cdefg'를 포함하는 줄을 반환 하시겠습니까? –

답변

0

나는 12 자의 줄을 포함하는 파일을 가지고 있는데 그 파일에서 5 문자의 문자를 찾고 싶습니다. 매퍼에서 나는 라인의 12 문자를 얻고 5 문자의 두 개의 맵을 만들 수 있고 왼쪽에있는 문자를 두어 다음 행에서 다음 3 문자를 가져오고 싶고 의 맵을 만들고 싶습니다. 감속기에서 그지도를 내 문자열과 비교할 수 있습니다.

File file = new File("myFile.txt"); 
try { 
    Scanner scanner = new Scanner(file); 
    String result = ""; 
    while (scanner.hasNextLine()) { 
     String line = scanner.nextLine(); 
     result += line; 
    } 
    System.out.println(result); 
    //here you can use this array 
    String spl[] = result.split("(?<=\\G.....)"); 

    System.out.println(Arrays.toString(spl)); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
:

abcdefghijklkahfdjshjsdhsdfkjsdjkjks 
[abcde, fghij, klkah, fdjsh, jsdhs, dfkjs, djkjk, s] 

당신은이 코드 조각에서 솔루션을 고취 할 수

이이 Splitting a string at every n-th character 확인 후 5 문자로 결과를 분할 할 수 있습니다 모두 함께 당신의 라인을 연결할 수 있습니다

출력

abcdefghijklkahfdjshjsdhsdfkjsdjkjks 
[abcde, fghij, klkah, fdjsh, jsdhs, dfkjs, djkjk, s] 

편집이 당신과 같이이 문제를 해결할 수 [ABCDE, bcdef, CDEFG, defgh ...]

을 abcdefghijklkahfdjshjsdhsdfkjsdjkjks처럼지도를 만들

:

String str = "abcdefghijklkahfdjshjsdhsdfkjsdjkjks"; 
List<String> list = new ArrayList<>(); 

for (int i = 0; i < str.length()-4; i++) { 
    String s = ""; 
    for (int j = i; j < i+5; j++) { 
     s+=result.charAt(j); 
    } 
    list.add(s); 
} 

출력

[abcde, bcdef, cdefg, defgh, efghi, fghij, ghijk, ...., djkjk, jkjks] 
+0

아이디어를 제공 [ABCDE, bcdef, CDEFG, defgh ...] 다음 줄의 시작 문자 –

+0

2ndly 필요 배열의 마지막 값은'jkjks' right @IbrarAhmed이어야합니다. 내 편집 내 다음 줄은 –

+0

그래서와 마지막 두 문자를 연결하는 –