홈>
쉼표로 구분 된 레코드가 포함 된 파일을 읽는 BufferedReader를 읽으려고합니다. 각 문자열 (또는 레코드)을 두 쉼표로 나누고 큰 따옴표를 제거하고 각 문자열을 String 배열의 인덱스에 넣고 싶습니다. 예를 들면 다음과 같습니다.
파일에 다음 줄이 있습니다.
( "0001", "00203", "82409"(줄 바꿈)
"0002", "00204", "82500"(줄 바꿈)
등)
문자열 배열에 0001을 넣고 싶습니다 [1], 00203을 String array [2]에 넣고 싶습니다. 등등 ....
다음 코드는 파일을 탐색하여 2 열의 모든 레코드를 String array [2]에 넣습니다. 즉, 아래 코드를 실행 한 후 System.out.println (arr [2])을 수행하면 00203과 00204가 인쇄되지만 array [2]는 00203이고 array [5]는 00204.
내 코드는 다음과 같습니다 :
public String[] getArray(String source) {
FileInputStream fileinput = new FileInputStream(source);
GZIPInputStream gzip = new GZIPInputStream(fileinput);
InputStreamReader inputstream = new InputStreamReader(gzip);
BufferedReader bufr = new BufferedReader(inputstream);
String str = null;
String[] arr = null;
while((str = bufr.readLine()) != null) {
arr = str.replace("\"", "").split("\\s*,\\s*");
}
return arr;
- 답변 # 1
- 답변 # 2
몇 가지 수정 작업이 효과가 있습니다.
public String[] getArray(String source) { FileInputStream fileinput = new FileInputStream(source); GZIPInputStream gzip = new GZIPInputStream(fileinput); InputStreamReader inputstream = new InputStreamReader(gzip); BufferedReader bufr = new BufferedReader(inputstream); String str = null; List<String> numbers = new LinkedList<String>; while((str = bufr.readLine()) != null) { String[] localArr = str.split(","); for(String intString : localArr){ numbers.add(intString.trim()); } } return arr;
- 답변 # 3
scanner.nextInt ()뿐만 아니라 스캐너 클래스를 사용해 보았습니다. 그런 다음 스트라이핑 할 필요가 없습니다.
Scanner s = new Scanner(inputstream); ArrayList<String> list = new ArrayList<String>(); while (s.hasNextInt()) list.add(s.nextInt()); String[] arr = list.toArray(new String[list.size()]);
- 답변 # 4
테스트되지 않음 :
arr = str.replaceAll("\"", "").replaceAll("(","").replaceAll(")","").split(",");
관련 자료
- shell - 시간 문자열 이름을 기반으로하는 bash 정렬 배열
- javascript - 문자열의 이전 배열을 새 배열로 교체
- node.js - 자바 스크립트에서 대소 문자를 구분하지 않는 문자열의 배열 값 바꾸기
- 문자열에서 분할 된 루비 배열
- esp32 - Arduino의 MQTT를 통해 int 배열을 문자열로 게시
- javascript - 배열에서 중복 문자열을 한 번 제거
- ios - Swift에서 문자열을 원하는 문자열 배열로 분할하는 방법에 대한 질문
- powershell - 문자열을 Object 배열로 분할
- 내 문자 배열에 올바르게 할당하는 내 문자열 (C)
- postgresql - NOT IN은 문자열 배열과 함께 작동합니다
- function - 2D 배열에 맞을 때만 인쇄하도록 문자열을 얻는 방법은 무엇입니까?
- swift - 문자열 또는 문자열 배열을 받아들이는 함수를 어떻게 얻습니까?
- C ++에서 문자 배열로 입력 문자열
- json - jq를 사용하여 배열을 구문 분석하고 문자열에 매핑
- java - 비밀번호를 저장하기 위해 문자열보다 Char 배열이 선호되는 이유는 무엇입니까?
- javascript - 문자열 배열에서 옵션을 선택할 때 속성 설정
- java - 문자열이 문자열 배열에 있는지 확인하는 효율적인 방법
- java - char 배열에 문자열을 어떻게 추가합니까?
- ios - Core 데이터에서 문자열 데이터와 같은 사전 또는 배열을 저장하는 방법은 무엇입니까?
- javascript - EJS 변수로 전달한 후 배열이 문자열로 바뀝니다
관련 질문
- 쉼표로 구분되고 큰 따옴표로 묶인 단어 문자열을 Java에서 문자열의 목록 /배열로 변환하는 방법
- Java는 크기가 n 인 다른 부울 배열로 배열을 필터링합니다.
- 배열 문자열 요소 액세스와 관련된 PHP 문제
- Java에서 루프 외부의 배열 액세스 문제
- java : 내 FileReader /BufferReader가 문장과 null을 모두 반환하는 이유는 무엇입니까?
- java : Arrays.sort ()를 사용하여 배열 정렬
- java : 길이 12에 대한 인덱스 12가 경계를 벗어났습니다.이 문제를 어떻게 해결할 수 있습니까?
- java : Float 및 Integer 배열 모두에서 최대 요소의 인덱스를 찾는 일반적인 방법
- c++ : 문자열의 첫 번째 문자를 문자로 전달하는 방법은 무엇입니까?
- (JAVA) 5x5 2d 배열의 2x2 하위 배열을 만들고 회전 한 다음 원래 배열에 다시 추가하려면 어떻게해야합니까?
Commons CSV는 특정 사용 사례에 맞게 설계되었습니다. 휠을 재발 명하지 마십시오. 아래 코드는 GZipped CSV가 필드와 라인으로 구문 분석되어 사용자가하려는 일처럼 보입니다.