2012-04-13 2 views
0

Я трудное время выяснить, как разбить строку, как один следующее:Java: String расщепление на несколько элементов

String str = "hi=bye,hello,goodbye,pickle,noodle 

Эта строка была прочитана из текстового файла, и мне нужно разбить строку в каждый элемент между запятыми. Поэтому мне нужно было бы разбить каждый элемент на свою строку, независимо от того, что читает текстовый файл. Имейте в виду, что каждый элемент может быть любой длины, и может быть любое количество элементов, которые «hi» равны. Есть идеи? Благодаря!

ответ

5

использование split!

String[] set=str.split(","); 

затем получить доступ к каждой строке, как вам нужно от множества [...] (так что позволяет сказать, что вы хотите, 3-й строки, вы бы сказали: установить [2]).

В качестве теста, вы можете напечатать их все:

for(int i=0; i<set.length;i++){ 
    System.out.println(set[i]); 
} 
+0

или использовать 'Arrays.toString (набор)' [для тест] – amit

+1

Split, потому что вы можете использовать регулярные выражения. Например: str.split (", \\ s *") Этот код будет разделять исходную строку (str) в каждой запятой и ноль или больше (*) пробелов. –

+1

Спасибо! Я не могу поверить, что я никогда не слышал об этом методе раньше ... Спасибо! – MrDrProfessorTyler

0

Я задаюсь вопросом: Вы имеете в виду, чтобы разделить ее как таковую:

"hi=bye" 
"hi=hello" 
"hi=goodbye" 
"hi=pickle" 
"hi=noodle" 

Поскольку простой сплит (» ") этого не сделает. Какова цель иметь «hi =» в вашей заданной строке?

Возможно, если вы имеете в виду, чтобы расколоть привет = от передней части строки, сделать это вместо того, чтобы:

String input = "hi=bye,hello,goodbye,pickle,noodle"; 
String hi[] = input.split(","); 
hi[0] = (hi[0].split("="))[1]; 
for (String item : hi) { 
    System.out.println(item); 
} 
+0

Да, я уверен, что я его ищу, хотя я не пошел так далеко, как раскол можно использовать еще раз, чтобы получить привет в начале, и объединение строк должно быть относительно легко выяснить оттуда. В любом случае, казалось, что было трудно разбить строку, вместо того, чтобы применять «hi =» для всех из них. –

1

Если вам нужно немного более продвинутый подход, я предлагаю Splitter класс гуавы в:

Iterable<String> split = Splitter.on(',') 
           .omitEmptyStrings() 
           .trimResults() 
           .split(" bye,hello,goodbye,, , pickle, noodle "); 

Это позволит избавиться от ведущих или задних пробелов и опустить пробелы. В классе есть еще несколько интересных вещей, например, разделение вашей строки на пары ключ/значение.

1
str = str.subString(indexOf('=')+1); // remove "hi=" part 
String[] set=str.split(","); 
+0

исправлен код. – sarwar026

Смежные вопросы