2013-09-18 4 views
3

Привета У меня есть текстовый файл, который содержит приведенный нижеJava и преобразование с использованием регулярных выражений

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND    
23876 root  20 0 9436 1764 760 R 4 0.0 0:00.08 top     
50741 hcsadm 20 0 18.0g 2.3g 751m S 4 0.4 1310:10 hdbnameserver  
51089 hcsadm 20 0 55.0g 48g 23g S 4 9.5 4713:14 hdbindexserver  
15618 gdm  20 0 273m 65m 11m S 2 0.0 162:17.68 gdm-simple-gree  
15938 cisadm 20 0 687m 281m 267m S 2 0.1 306:55.97 hdb.sapCIS_HDB0  
17645 hbsadm 20 0 18.1g 7.7g 598m S 2 1.5 974:48.98 hdbnameserver  
17795 hbsadm 20 0 109g 104g 39g S 2 20.8 14496:26 hdbindexserver 

и мой Java-код чтения файла в приведенном ниже

Scanner sc = new Scanner(new File("top.txt")); 
while(sc.hasNext()){ 
    String line = sc.nextLine();  
} 

Теперь любой один знает, как я перевести данные файла в следующем формате

array=[{PID:23876,USER:root,COMMAND:top},{PID:50741,USER:hcsadm,COMMAND:hdbnameserver},..........] 

Как я использовал регулярное выражение в java, поэтому я конвертирую свои информацию о файле в вышеуказанном формате или какие-либо другие опции в java для создания над массивом.

+0

Вы хотите строку JSON, которая представляет содержимое файла? Или ваш предлагаемый вывод представляет собой концептуальное представление структуры данных Java? Поскольку массивы не выглядят так, как в Java. –

+0

@TedHopp Привет, на самом деле я хочу строку json, поэтому я вставляю эту строку json в mongo. – Yogesh

+0

Используйте одно из опубликованных решений для разбора каждой строки (конечно, пропустите первую строку) и используйте библиотеку JSON для создания соответствующих структур JSON. Если у вас J2EE 7, вы можете использовать классы в ['javax.json'] (http://docs.oracle.com/javaee/7/api/javax/json/package-summary.html). В качестве альтернативы вы можете использовать сторонний пакет, например, легкий [json-simple] (https://code.google.com/p/json-simple/) или популярный [JSON в Java] (http: // json .org/java /). Многие другие библиотеки Java перечислены на [json.org] (http://www.json.org). –

ответ

2

Просто разделите каждую линию.

String[] fields = line.split("\\s+"); // split based on whitespace characters 
String PID = fields[0]; 
String USER = fields[1]; 
String COMMAND= fields[11]; 
+0

Извините, отредактирован. Я думаю, что это должно быть '\\ s +' –

2

Try:

while(sc.hasNext()){ 
    String line = sc.nextLine();  
    String[] values = line.split("\\s+"); 
    String PID = "PID":+values[0]; 
    String USER = "USER:"+values[1]; 
    String COMMAND = "COMMAND:"+values[11]; 
    //now do whatever you want with it, for example 
    String [] res = {PID, USER, COMMAND}; 
} 
Смежные вопросы