Вопрос по delimiter, string, java – разделитель строк Java, сохранение разделителя в токене
я пытаюсь разбить строку, но сохранить разделитель в начале следующего токена (если это возможно)
Пример: я пытаюсь разбить строкуF120LF120L
в
<code>F120 L F120 L </code>
Я пытался
<code>StringTokenizer st = new StringTokenizer(str, "F,L"); </code>
но это только возвращает
<code>120 120 </code>
Хотите разделить только на 'F' и 'L' или также на ','?
Javaguru
3
ответа
@ Докумен, вы можете использовать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
Используйте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
Как насчет грубой силы?
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
Похожие вопросы
Хотите разделить только на 'F' и 'L' или также на ','?