Необработанные Строки в Java - для regex в особенности

Вы могли взять средний буфер, добирается на выполнение в течение периода действия экземпляра:

SELECT username,
       buffer_gets,
       disk_reads,
       executions,
       buffer_get_per_exec,
       parse_calls,
       sorts,
       rows_processed,
       hit_ratio,
       module,
       sql_text
       -- elapsed_time, cpu_time, user_io_wait_time, ,
  FROM (SELECT sql_text,
               b.username,
               a.disk_reads,
               a.buffer_gets,
               trunc(a.buffer_gets / a.executions) buffer_get_per_exec,
               a.parse_calls,
               a.sorts,
               a.executions,
               a.rows_processed,
               100 - ROUND (100 * a.disk_reads / a.buffer_gets, 2) hit_ratio,
               module
               -- cpu_time, elapsed_time, user_io_wait_time
          FROM v$sqlarea a, dba_users b
         WHERE a.parsing_user_id = b.user_id
           AND b.username NOT IN ('SYS', 'SYSTEM', 'RMAN','SYSMAN')
           AND a.buffer_gets > 10000
         ORDER BY buffer_get_per_exec DESC)
 WHERE ROWNUM <= 20
68
задан wrschneider 16 March 2013 в 01:15
поделиться

7 ответов

Нет, не существует.

Обычно вы помещаете необработанные строки и регулярные выражения в файл свойств, но они также имеют некоторые требования к escape-последовательности.

37
ответ дан 24 November 2019 в 14:14
поделиться

Нет (к сожалению).

11
ответ дан 24 November 2019 в 14:14
поделиться

Добавьте необработанный текстовый файл в путь к классу и прочтите его с помощью getResourceAsStream (....)

3
ответ дан 24 November 2019 в 14:14
поделиться

( Файлы свойств распространены, но беспорядочно - я рассматриваю большинство регулярных выражений как код и храню их там, где я могу ссылаться на них, и вы тоже должны. Что касается актуальный вопрос :)

Да, есть способы обойти плохую читаемость. Вы можете попробовать:

String s = "crazy escaped garbage"; //readable version//

, хотя это требует осторожности при обновлении. В Eclipse есть опция, которая позволяет вставлять текст между кавычками, и escape-последовательности применяются за вас. Тактика состоит в том, чтобы сначала отредактировать читаемые версии, а затем удалить мусор и вставить их между пустыми кавычками "".


Время идеи:

Взломайте ваш редактор, чтобы преобразовать их; выпустить как плагин. Я поискал плагины, но не нашел (хотя попробуйте поискать). Между экранированными исходными строками и текстом текстового поля существует взаимно однозначное соответствие (без учета \ n, \ r \ n). Возможно, можно использовать выделенный текст с двумя кавычками на концах.

String s = "##########
#####";

где # - любой выделенный символ - разрыв обрабатывается как новая строка. Текст, набранный или вставленный в выделенную область, экранируется в «реальном» источнике и отображается так, как будто это не так. (Точно так же, как Eclipse экранирует вставленный текст, он экранирует набранный текст, а также отображает его без обратной косой черты.) Удалите одну из кавычек, чтобы вызвать синтаксическую ошибку, если вы хотите редактировать как обычно. Хм.

а также отображать его без обратной косой черты.) Удалите одну из кавычек, чтобы вызвать синтаксическую ошибку, если вы хотите редактировать как обычно. Хм.

а также отображать его без обратной косой черты.) Удалите одну из кавычек, чтобы вызвать синтаксическую ошибку, если вы хотите редактировать как обычно. Хм.

3
ответ дан 24 November 2019 в 14:14
поделиться

String # getBytes () предоставляет копию внутреннего байтового массива, содержащегося в каждом отдельном объекте String, который фактически содержит строку в 16-битной кодировке UTF-16 - байтовый массив будет содержать та же строка, преобразованная в соответствии с кодировкой платформы по умолчанию. Я хочу сказать, что я думаю, что это максимально приближенная к "сырой" строке, которую вы когда-либо могли получить в Java.

2
ответ дан 24 November 2019 в 14:14
поделиться

Вы можете написать собственное средство чтения свойств без экранирования и поместить свои строки в файл ресурсов.

0
ответ дан 24 November 2019 в 14:14
поделиться

Я лично считаю данные строк регулярных выражений, а не код, поэтому они мне не нравятся в моем коде, но я понимаю, что это непрактично и непопулярно (Да, я понимаю, вы не вынужден кричать на меня).

Учитывая, что нет собственного способа сделать это, я могу предложить два варианта (ну, три, но третий, ммм, неестественный).

Так что мои личные предпочтения будут быть просто для разбора файла на строки. Вы можете назвать каждую запись в файле и загрузить их все в хеш-таблицу для облегчения доступа из вашего кода.

Второй вариант, создать файл, который будет предварительно обработан в интерфейс java; при этом он может избежать регулярного выражения. Лично я ненавижу генерацию кода, но если файл java на 100% никогда не редактируется человеком, это не так уж плохо (настоящее зло - это сгенерированные файлы, которые вы должны редактировать! )

В-третьих (сложная и, вероятно, плохая идея): вы можете создать собственный доклет, который будет извлекать строки из ваших комментариев в текстовый файл или файл заголовка во время компиляции, а затем использовать один из двух других методов над. Это сохраняет ваши строки в том же файле, в котором они используются. Это может быть действительно сложно сделать правильно, а штрафы за неудачу очень велики, поэтому я бы даже не рассматривал это, если бы у меня не была непреодолимая потребность и какой-то довольно впечатляющий талант.

Я предлагаю это только потому, что комментарии в свободной форме а вещи внутри тега pre достаточно защищены от форматеров и других уродливых систем. Доклет может извлечь это перед печатью javadocs и даже может добавить некоторые из сгенерированных javadocs, указывающих на использование вами строк регулярных выражений.

0
ответ дан 24 November 2019 в 14:14
поделиться
Другие вопросы по тегам:

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