2013-02-21 1 views
0
5163583,601028,30,,0,"Leaflets, samples",Cycle 5 objectives,,20100804T071410, 

문자열을 길이가 10 인 배열로 만드는 방법은 무엇입니까? 내가 기대 배열은 다음과 같습니다자바에서 길이가 10 인 배열로 문자열을 분할하는 방법은 무엇입니까?

array[0]="5163583"; 
array[1]="601028"; 
array[2]="30"; 
array[3]=""; 
array[4]="0"; 
array[5]="Leaflets, samples"; 
array[6]="Cycle 5 objectives"; 
array[7]=""; 
array[8]="20100804T071410"; 
array[9]=""; 

정말 감사합니다!

+1

질문을 이해하기 쉽도록하십시오. 맨 위에는 긴 끈 같은 것이 뭐니? –

+1

은 java.lang.String 라이브러리 클래스를 통과합니다. 문자열을 구문 분석하는 많은 방법이 있습니다. [oracle link] (http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html) –

+0

논리에 따르면, 배열 [5] = "전단지, 견본";'array [5] = "\"전단지, 견본 \ ""의 줄을 더 따라야합니다 : –

답변

1
String string = 
    "5163583,601028,30,,0,\"Leaflets, samples\",Cycle 5 objectives,,20100804T071410,"; 

Matcher m = Pattern.compile ("(\"[^\"]*\"|[^,\"]*)(?:,|$)").matcher (string); 

List <String> chunks = new ArrayList <String>(); 
while (m.find()) 
{ 
    String chunk = m.group (1); 
    if (chunk.startsWith ("\"") && chunk.endsWith ("\"")) 
     chunk = chunk.substring (1, chunk.length() - 1); 
    chunks.add (chunk); 
} 

String array [] = chunks.toArray (new String [chunks.size()]); 
for (String s: array) 
    System.out.println ("'" + s + "'"); 
+0

이 솔루션의 한 가지 잠재적 인 문제점은 따옴표가 따옴표로 묶인 문자열 내에 나타나지 않는다고 간주한다는 점입니다 (따옴표 제외). (그런데 왜 함수 호출에 인수 앞에 공백을 추가합니까?). – nhahtdh

+0

@nhahtdh 문제가 있지만 추가하기 쉬운 기능이 없습니다. –

3

당신은 CSV 판독기를 찾고 있습니다. opencsv을 사용할 수 있습니다. opencsv 라이브러리

:

new CSVReader(new StringReader(inputString)).readNext() 

그것은 열 값의 배열을 반환한다.

0
String sb = "5163583,601028,30,,0,\"Leaflets, samples\",Cycle 5 objectives,,20100804T071410,"; 

String[] array = new String[10]; 
StringBuilder tmp = new StringBuilder(); 
int count=0; 
for(int i=0, index=0; i<sb.length(); i++) 
{ 
    char ch = sb.charAt(i); 
    if(ch==',' && count==0) 
    { 
     array[index++] = tmp.toString(); 
     tmp = new StringBuilder(); 
     continue; 
    } 
    else if(ch=='"') 
    { 
     count = count==0 ? 1 : 0; 
     continue; 
    } 

    tmp.append(ch); 
} 
for(String s : array) 
    System.out.println(s); 
관련 문제