Разделить строку в Java, как он извлекается из списка? - PullRequest
1 голос
/ 04 ноября 2010

Я хочу разделить список строк, так как я перебираю список, представьте следующее как список.

["StringA.StringB.StringC"]["StringA.StringB.StringC"]["StringA.StringB.StringC"]["StringA.StringB.StringC"]

Итак, я хочу перебрать список, вытащить каждую строку ("StringA.StringB.StringC")

Затем вы хотите разделить "." и назначить StringA для строковой переменной - String B для одной и String C. Выполнить некоторую работу и перейти к следующей.

Есть идеи, как мне это сделать?

Ответы [ 6 ]

4 голосов
/ 04 ноября 2010

Это довольно простая задача. Просто используйте foreach для перебора списка, а затем разбейте строку на символ ..

for(String s: list) {
    String[] splitString = s.Split("\\.");
    // do work on the 3 items in splitString
}

Переменная splitString будет иметь длину 3.

1 голос
/ 04 ноября 2010

Конечно! Вы просто хотите String#split().

for (String s : myList)
{
    String[] tokens = s.split("\\.");
    // now, do something with tokens
}

Вам нужно экранировать точку в аргументе в split(), потому что строка интерпретируется как шаблон регулярного выражения , а период без экранирования (".") будет соответствовать любому символу - не что хочешь!

0 голосов
/ 04 ноября 2010

Класс String имеет метод split(String regex), который разбивает строку по регулярному выражению. Если вам не нужна работа с регулярными выражениями, вы можете использовать очень удобный класс StringUtils из Apache Commons Lang.

0 голосов
/ 04 ноября 2010

Чтобы просмотреть список, см. http://download.oracle.com/javase/tutorial/java/nutsandbolts/for.html

Чтобы разбить строку, используйте String.split(regex).

0 голосов
/ 04 ноября 2010

Итак, у вас есть список строк [], которые являются связанными строками. Если это не какая-то унаследованная структура данных, вам лучше сделать ее более однородной.

В любом случае, итерация довольно проста -

List<String[]> l = ....

for (String[] outer: l) { 
       for (String s: outer){
            for (String inner: s.split("\\.")) // s.split takes a regex and returns a String[],
                 // inner has your inner values now
0 голосов
/ 04 ноября 2010
List<String> strings=new ArrayList<String>();

for (String s:stringList){
   strings.addAll(Arrays.asList(s.split("\\.")));
}

тогда у вас будут все строки в одном списке, и вы сможете их перебирать.

...