2017-11-18 5 views
0

그래서 여기에 .csv를 문자열로 가져오고 각 값을 변수에 저장해야합니다. 이 작업을 수행하기 위해 문자열을 올바르게 구문 분석하는 방법을 잘 모르겠습니다.문자열을 파싱하여 다음 구분 기호를 찾습니다. - 처리

내 생각은 보이는 기능입니다 그래서

final char delim = ','; 

int nextItem(String data, int startFrom) { 
    if (data.charAt(startFrom) != delim) { 
     return data.charAt(startFrom) 
    } else { 
     return nextItem(data, startFrom + 1); 
    } 
} 

같은 나는

nextItem("45,621,9", 0); 

처럼 뭔가를 전달 경우 것 반환 45

나는 그것을 통과하는 경우

nextItem("45,621,9", 3); 

내가 제대로 설정이 순환 될 것을 만약 내가 모르겠지만, 나는 또한 내가 유일한 규정 내가 사용할 수 있습니다, 가정 루프를 사용할 수 621

을 반환 Substring 메소드.

답변

0

반복적으로 쉽게 수행 할 수있는 문제에 대해서는 재귀를 사용하지 마십시오. 재귀는 스택 및 호출 프레임 측면에서 비용이 많이 듭니다. 매우 긴 문자열은 StackOverflowError를 생성 할 수 있습니다.

난 당신이 java.lang.String의 표준 방법 indexOf을 살펴 보시기 바랍니다 :

0

좋은 대안은 정규 표현식이다. 당신은 당신의 입력 문자열에있는 단어입니다 문자열 배열을 반환합니다 분리 문자

코드

String[] nextItem(String data) { 
    String[] words=data.split(","); 
    return words;  
} 

이 같은 ','쉼표를 고려하여 단어를 분리해서 할 수 있습니다. 그런 다음 필요에 따라 배열을 사용할 수 있습니다.

는 희망이 도움)

0

처리는 설명하고 정확히 수행하는 split() 기능이 있습니다.

the reference에서

: 그것은 H. Sodi's answer처럼 String#split() 기능을 사용하고 뒤에서는

String men = "Chernenko,Andropov,Brezhnev"; 
String[] list = split(men, ','); 
// list[0] is now "Chernenko", list[1] is "Andropov"... 

,하지만 당신은 그냥 자신을 정의하는 대신이 기능을 사용합니다.