2014-12-16 2 views
0

Я пытаюсь разбить конфигурацию на массив, но у меня есть некоторые проблемы.Java Split String list в список строк

Моя конфигурация выглядит следующим образом:

Enchantments: Durability:3 Unbreaking:2

Я хочу, чтобы мой массив, чтобы выглядеть [0]Durability [1]3 [2]Unbreaking [3]2

Но я могу получить только Долговечность идти в [0] и 3 в [1] это не пойдет дальше этого. Весь код работает, вот и все, что вам нужно. Помощь! теги кода являются наихудшими на сайте, и я не могу получить их жизни меня, Так вот

if (((String)nodes.get(nodeapi)).contains("enchantments:")){ 
     System.out.println("found"); 
     ench = ((String)nodes.get(nodeapi)).replace("enchantments:", ""); 
     System.out.println(ench); 
     String[] enc = ench.split(" "); 
     System.out.println("0 " + enc[0]); 
     System.out.println("1 " + enc[1]); 
     int p = 0; 
     for (int i2=0;i2<enc.length*2;i2++){ 
       p++; 
       encha = enc[i2].split(":"); 
       System.out.println("Passed loop: " + p + " with encha: "+encha[i2]); 
     } 
} 
+0

Будьте осторожны. Код, который вы отправили, заменяет «enchantments:» 'пустой строкой, но ваш пример имеет пробел после« enchantments: »', и это пространство останется в строке. Если вы используете 'split' on' ": |" ', как предложили другие, это оставит пустую строку в' enc [0] ', а не' 'Durability '', потому что 'split()' будет обрабатывать ведущую пространство как разделитель. Если это проблема, используйте 'trim()' перед 'split()'. – ajb

+0

(Или сделайте как один из ответов, и укажите пробел в строке, которую вы «замените».) – ajb

ответ

0

Try использовать регулярное выражение ":| ", когда вы разбить строку.

Как и в

string.split(":| "); 

Так что ваш код будет выглядеть следующим образом:.

String[] enc = ench.split(":| "); 

(если Ench является Durability:3 Unbreaking:2

тогда массив будет то, что вы хотите

+0

Так как это будет выглядеть в моем массиве, когда я это сделаю? Я сохраняю свой код одинаковым, просто изменив раскол, и он будет работать? Поскольку он работает для первых 2, [0] говорит о долговечности и [1] говорит 3, но не принимает второй элемент в списке, который пытается разбить и разбить его по списку, в котором мне это нужно. Мне нужно, чтобы он разделил элемент из enc на encha 0 и 1 и enc [1] на enc 2 и 3 и т. Д. – pablo67340

+0

Какая строка, которую вы раскалываете? – JClassic

+0

Заменить 5-ю строку ench.split (": |"); как говорит JClassic, и u будет иметь массив длиной 4, который содержит именно те элементы, которые вы хотите [0] Долговечность [1] 3 [2] Unbreaking [3] 2 –

0

You может сделать следующее:

String x = "Enchantments: Durability:3 Unbreaking:2"; 
x = x.replace("Enchantments: ", ""); 
String[] values = x.split(":|\\s"); 
for(String val : values) 
    System.out.println(val); 
Смежные вопросы