2013-11-17 2 views
-1
import java.util.ArrayList; 
import java.util.StringTokenizer; 

public class test { 

public static void main(String args[]) { 

    ArrayList<String> data = new ArrayList<String>(); 
    String s = "a,b,c,d,e,f,g"; 
    StringTokenizer st = new StringTokenizer(s,","); 

    while(st.hasMoreTokens()){ 
     data.add(st.nextToken()); 
    } 
    System.out.println(data); 

} 

} 

Проблемы в поиске пустых элементов в данных CSV выше код работает хорошо, когда данные завершены. Если некоторые данные отсутствуют, не удается обнаружить пустые данные.Promblem найти пустые элементы запятой отделено данные

например: полные данные: а, б, в, г, д, е, ж

, если, д, е, г удаляют

Новые данные:, Ь, с ,, , f,

4 данные отсутствуют !!

Мне нужен способ, чтобы поместить эти данные в ArrayList с нулевыми или «» значениями для пустых данных

+0

Какой код вы пробовали до сих пор? – Ari

+0

Пожалуйста, добавьте дополнительную информацию, чтобы мы могли получить представление о том, что означает «4 данных». – slider

+0

Как выглядит ваш код? Также вы используете парсер CSV? – Pshemo

ответ

0

Я уверен, что есть более элегантные решения, но простой один будет использовать split() функции:

public static void main(String args[]) { 

    ArrayList<String> data = new ArrayList<String>(); 
    String s = ",b,c,,,f,"; 

    //create an array of strings, using "," as a delimiter 
    //if there is no letter between commas, an empty string will be 
    //placed in strings[] instead 
    String[] strings = s.split(",", -1); 

    for (String ss : strings) { 
     data.add(ss); 
    } 

    System.out.println(data); 
} 
+0

Уже пробовал, Проблемы: 1. не обнаруживает последний недостающий элемент 2. раскол медленно для огромных данных – Anshul

+0

для последнего элемента theres только одна запятая. – Anshul

+0

@Anshul Если вы используете разделение с отрицательным пределом, будут включены последние пустые элементы. Попробуйте 's.split (", ", -1);' – Pshemo

0

вы можете использовать Guava Splitter сделать:

import com.google.common.base.Splitter; 

public class Example 
{ 
    private static final Splitter SPLITTER = Splitter.on(",").trimResults(); 

    public List<String> split(String singleLine) { 
     return SPLITTER.split(singleLine);   
    } 
} 
Смежные вопросы