Вопрос по delimiter, string, java – разделитель строк Java, сохранение разделителя в токене

1

я пытаюсь разбить строку, но сохранить разделитель в начале следующего токена (если это возможно)

Пример: я пытаюсь разбить строкуF120LF120L в

<code>F120
L
F120
L
</code>

Я пытался

<code>StringTokenizer st = new StringTokenizer(str, "F,L");
</code>

но это только возвращает

<code>120
120
</code>
Хотите разделить только на 'F' и 'L' или также на ','? Javaguru

Ваш Ответ

3   ответа
2

@ Докумен, вы можете использоватьStringTokenizer st = new StringTokenizer(str, "L", true); Последний параметр - логическое значение, указывающее, что разделители также должны быть возвращены.

Таким образом, F возвращается отдельно .. не F120! Для его примера будет работать следующее: StringTokenizer st = new StringTokenizer (str, "L", true); Javaguru
О да. Следует читать более внимательно. :( Я обновлю ответ, спасибо! S.R.I
Спасибо за быстрые ответы, ребята: -) rod
Кстати, обратите внимание на OP, если вы разбиваете по tokesn, вам также не нужен последний параметр. То есть вы просто используете «L» в качестве токена, а не «F» S.R.I
yeah Я буду использовать «F» в качестве токена, также иногда после «L» будут цифры, но спасибо, я сейчас на правильном пути, чтобы самому разобраться с остальными (надеюсь): -) rod
2

Используйтеsplit() для практических целейStringTokenizer является @ Устаревш (это все еще там только для обратной совместимости). Это будет работать:

String delimiter = "L";
String str = "F120LF120L";
String[] splitted = str.split(delimiter);

for (String s : splitted) {
    System.out.println(s);
    System.out.println(delimiter);
}

> F120
> L
> F120
> L
str.split(delimiter); это возвращает массивF120 безL isvforall
0

Как насчет грубой силы?

String del = "L";
String str = "F120LLF120LLLLF12L";
int i = 0;

while (true) {
    i = str.indexOf(del, i);
    if (i == -1) break;
    String a = str.substring(0, i);
    String b = str.substring(i + del.length());
    str = a + " " + del;
    str += b.startsWith(del) || b.length() == 0 ? b : " " + b;
    i = a.length() + del.length() + 1;
}

System.out.println(str);
// Will print: F120 L L F120 L L L L F12 L
Конечно, вы должны заменить строки пробела ("") строками новой строки ("\ n") tor

Похожие вопросы