2013-10-04 4 views
0

Я новичок в java, пожалуйста, помогите мне с этой проблемой.
У меня есть строка, позволяет сказать, чтоДвухмерный массив строк в java

adc|def|efg||hij|lmn|opq 

Теперь я разделить эту строку и сохранить ее в массиве с помощью

String output[] = stringname.split("||"); 

теперь я снова нужно разделить, что на основании «|» и мне нужно что-то вроде

arr[1][]=adc,arr[2][]=def
и т. Д., Чтобы я мог получить доступ к каждому элементу. что-то вроде двухмерного массива строк. Я слышал, что это можно сделать, используя Arraylist, но я не могу это понять. Пожалуйста, помогите.

+0

извините, ожидается, что arr [0] [0] = adc, arr [0] [1] = def и т. Д. – Magic

ответ

1

Вот ваше решение, кроме имен [0] [0] = "АДЦ" имена [0] [1] = "DEF" и так далее:

String str = "adc|def|efg||hij|lmn|opq"; 
String[] obj = str.split("\\|\\|"); 
    int i=0; 
    String[][] names = new String[obj.length][]; 

    for(String temp:obj){ 
     names[i++]=temp.split("\\|"); 

    } 
List<String[]> yourList = Arrays.asList(names);// yourList will be 2D arraylist. 
System.out.println(yourList.get(0)[0]); // This will print adc. 
System.out.println(yourList.get(0)[1]); // This will print def. 
System.out.println(yourList.get(0)[2]); // This will print efg. 
       // Similarly you can fetch other elements by yourList.get(1)[index] 
+0

Почему вы избегаете труб? – Makoto

+0

Я пробовал без экранирования труб, но потом его не сменил строку правильно. Вот почему я добавляю экранирующие трубы и бинго ... они работают. :) –

+0

А где 'ArrayList' часть вопроса ?! – SudoRahul

0

Что вы можете сделать, это:

String str[]="adc|def|efg||hij|lmn|opq".split("||"); 
String str2[]=str[0].split("|"); 
str2 will be containing abc, def , efg 
// arrays have toList() method like: 

Arrays.asList(any_array); 
+0

U означает, что использовать отдельные массивы для суб-разбиения на основе '|' ?? но разбросанные раскол с разломами. – Magic

+0

Я имел в виду, как вы можете получить к ним доступ, и в соответствии с вашими потребностями вы можете обойти их и поместить в массив, arrayList, что бы вы ни хотели, я показал, как разрезать их –

0

вряд ли могу понять вашу проблему ...

Я думаю, вы можете использовать 2-dimenison ArrayList: ArrayList<ArrayList<String>>

String input = "adc|def|efg||hij|lmn|opq"; 
ArrayList<ArrayList<String>> res = new ArrayList<ArrayList<String>>(); 
for(String strs:input.split("||")){ 
    ArrayList<String> strList = new ArrayList<String>(); 
    for(String str:strs.split("|")) 
     strList.add(str); 
    res.add(strList); 
} 
Смежные вопросы