String text = "99.91.220.138 - - [05/Oct/2015:06:37:26 +0300] "GET /R/0A/ID_0000013091.ism/QualityLevels(1469889)/Fragments(video=14795200000) HTTP/1.1" 200 658377 "-" "Firefox/1.5" "-" rt=0.000 ut = "-" cs=HIT";
Я хочу прочитать все символы этой строки и поместить строку между двумя пустыми пробелами в массив:
- array[0] will be "99.91.220.138"
- array[1] will be "-"
- array[2] will be "-"
и теперь, если между двумя пустыми пробелами есть "[]" или кавычки (""), я хочу получить строку до конца таких знаков, как:
- array[3] will be "[05/Oct/2015:06:37:26 +0300]"
- array[4] will be "GET
/R/0A/ID_0000013091.ism/QualityLevels(1469889)/Fragments(video=14795200000)
HTTP/1.1"
после или до этого мне нужно удалить «-» и что-то ненужное из массива для большей производительности.
.
Какие у вас есть предложения, кроме использования регулярных выражений?
Мой руководитель группы не разрешает использовать регулярное выражение
Используйте String # slpit пробелом text.split(" ")
Что насчет "[ "
Какой странный выбор со стороны руководителя вашей группы. Что ж, это тоже исключает String.split. Использует регулярное выражение. Вам, вероятно, следует преобразовать вашу String в char[], сделать это очень сложным и запутанным способом, а затем, возможно, поговорить с руководителем вашей группы, что прямое запрещение регулярных выражений, возможно, не лучший вариант.
Чтобы вы начали с идеи: переберите свой char[], установите некоторый логический флаг в значение true при обнаружении [, игнорируйте пробелы, пока не встретите ], где вы снова установите свой флаг в значение false. Это должно быть достаточно легко реализовать.
Публикация вопросов о домашних заданиях - это нормально. Вам не нужно притворяться, что ваш учитель - руководитель группы. :) Все, что вам нужно в вашем цикле, - это некоторая информация о состоянии. когда вы сталкиваетесь с скобкой, вы устанавливаете состояние «в скобках» и просто просматриваете все, пока не найдете закрывающую скобку. Такое же состояние в кавычках. Следующим назначением будут вложенные скобки, и тогда вам придется использовать счетчик, который отслеживает, насколько глубоко вы вложены.




Я бы порекомендовал вам использовать функцию разделения.
Итак, для вашей первой функциональности вы используете:
string.split(" ");
Чтобы сохранить процитированные утверждения, это может вам помочь:
Ваше решение полностью зависит от регулярных выражений (как и ваше связанное решение для второй проблемы), которое было исключено OP.
string.split ("") мне не помогает, потому что мне нужно также получить строку между '[' и ']'
Я сделал это с помощью регулярного выражения, но теперь мне нужно сделать это по-другому.
Ах ты прав! Возможно, вы могли бы реализовать итератор, который проверяет каждый символ в массиве. Затем каждый раз, когда вы уточняете цитату, меняйте логическое значение, которое разбивает восходящий массив при встрече с пробелом или квадратной скобкой или нет, в зависимости от этого логического?
Не могли бы вы пояснить, почему вам не нужно решение, использующее регулярное выражение? Кажется, это действительно хороший вариант использования для одного.