Получить строку из двух символов - PullRequest
1 голос
/ 09 апреля 2011

Мне нужно получить строку из двух символов. У меня есть это

S= "10:21:35 |Manipulation       |Mémoire centrale   |MAJ Registre mémoire"

и должно возвращать 4 строки в переменной:

a=10:21:35
b=Manipulation
c=Mémoire centrale
d=MAJ Registre mémoire

Ответы [ 7 ]

6 голосов
/ 09 апреля 2011

Там String#split.Так как он принимает строку регулярного выражения, а | является специальным символом в регулярных выражениях, вам нужно экранировать его (с обратной косой чертой).А поскольку \ является специальным символом в строковых литералах Java, вам также необходимо экранировать it , что иногда смущает людей.Поэтому, учитывая:

String S = "10:21:35 |Manipulation |Mémoire centrale |MAJ Registre mémoire";

, тогда

String[] parts = S.split("\\|");
int index;
for (index = 0; index < parts.length; ++index) {
    System.out.println(parts[index]);
}

выведет

10:21:35 
Manipulation 
Mémoire centrale 
MAJ Registre mémoire

( с пробелами в конце первых трех битов;trim те, если необходимо.)

3 голосов
/ 09 апреля 2011
String s = " 10:21:35   |  Manipulation |  Mémoire centrale |   MAJ Registre mémoire   ";
String[] split = s.trim().split("\\s*\\|\\s*",-1); //trim and split
2 голосов
/ 09 апреля 2011

В качестве альтернативы org.apache.commons.lang.StringUtils имеет около 14 вариантов метода split ().

1 голос
/ 09 апреля 2011

Если длина каждого столбца различна, используйте приведенные здесь примеры с методом split.

Однако, если у вас формат файла фиксированного размера, substring будет гораздо лучшим вариантом. Если вы посмотрите на реализацию substring (Java 5 и выше, если я правильно помню) - вы увидите, что у него есть O (1) для создания новых строк, тогда как split использует регулярное выражение, которое отнимает много времени.

0 голосов
/ 09 апреля 2011

Как и в других ответах, я предлагаю вам использовать метод split () для разделения строки, но не забывайте использовать обрезку, если у вас не будет пробелов после частей, например:

S= "10:21:35 |Manipulation       |Mémoire centrale   |MAJ Registre mémoire"    
String splitted[] = S.split("\\|");
String a = splitted[0].trim();
String b = splitted[1].trim();
...
0 голосов
/ 09 апреля 2011

Вы также можете использовать string.substring и получить требуемый вывод как

string a =s.substring(0,8)

Таким образом, вы можете назначить тот, который вы хотите

0 голосов
/ 09 апреля 2011

Вы, вероятно, хотите это:

String[] s = "10:21:35 |Manipulation |Mémoire centrale |MAJ Registre mémoire".split("\\|");

Существует также метод trim(), который удаляет завершающие пробелы из строк.

...