Новичок хочет создать читателя PDF для iPod touch - каков лучший подход?

Побег с двойной обратной косой чертой

R обрабатывает обратную косую черту как escape-значения для символьных констант . (... и, следовательно, регулярные выражения. Следовательно, необходимо наличие двух обратных косых черт при поставке символьного аргумента для шаблона. Первый - это не символ, а второй - символ). Вы можете видеть как они обрабатываются с помощью cat .

y <- "double quote: \", tab: \t, newline: \n, unicode point: \u20AC"
print(y)
## [1] "double quote: \", tab: \t, newline: \n, unicode point: €"
cat(y)
## double quote: ", tab:    , newline: 
## , unicode point: €

Дальнейшее чтение: Выключение обратной косой черты с обратным слэшем в R вызывает 2 обратных слэша в строке, а не 1

Чтобы использовать специальные символы в регулярном выражении, простейший метод обычно избегает их с обратным слэшем, но, как отмечалось выше, обратная косая черта должна быть экранирована.

grepl("\\[", "a[b")
## [1] TRUE

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

grepl("\\\\", c("a\\b", "a\nb"))
## [1]  TRUE FALSE

Пакет rebus содержит константы для каждого из специальных символов, чтобы сэкономить вам чернильные черты.

library(rebus)
OPEN_BRACKET
## [1] "\\["
BACKSLASH
## [1] "\\\\"

Дополнительные примеры см. в:

?SpecialCharacters

. Ваша проблема может быть решена следующим образом:

library(rebus)
grepl(OPEN_BRACKET, "a[b")

Формировать класс символов

Вы также можете обернуть специальные символы в квадрате b ракеты для формирования класса символов .

grepl("[?]", "a?b")
## [1] TRUE

Два специальных символа имеют особое значение внутри классов символов: \ и ^.

Обратная косая черта должен быть экранирован, даже если он находится внутри класса символов.

grepl("[\\\\]", c("a\\b", "a\nb"))
## [1]  TRUE FALSE

Резерв должен быть только экранирован, если он находится непосредственно после квадратной скобки открытия.

grepl("[ ^]", "a^b")  # matches spaces as well.
## [1] TRUE
grepl("[\\^]", "a^b") 
## [1] TRUE

rebus также позволяет вам сформировать класс символов.

char_class("?")
##  [?]

Использовать существующий класс символов

Если вы хотите совместить все знаки препинания, вы можете использовать символ [:punct:] class.

grepl("[[:punct:]]", c("//", "[", "(", "{", "?", "^", "$"))
## [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE

stringi сопоставляет это с общей категорией Unicode для пунктуации, поэтому его поведение немного отличается.

stri_detect_regex(c("//", "[", "(", "{", "?", "^", "$"), "[[:punct:]]")
## [1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE

Вы также можете использовать кросс-платформенную синтаксис для доступа к UGC.

stri_detect_regex(c("//", "[", "(", "{", "?", "^", "$"), "\\p{P}")
## [1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE

Использовать \ Q \ E escapes

Размещение символов между \\Q и \\E делает механизм регулярного выражения обрабатывать их буквально, а не как регулярные выражения.

grepl("\\Q.\\E", "a.b")
## [1] TRUE

rebus позволяет писать литеральные блоки регулярных выражений.

literal(".")
##  \Q.\E

Не использовать регулярные выражения

Регулярные выражения не всегда являются ответом. Если вы хотите сопоставить фиксированную строку, вы можете сделать это, например:

grepl("[", "a[b", fixed = TRUE)
stringr::str_detect("a[b", fixed("["))
stringi::stri_detect_fixed("a[b", "[")
6
задан user15420 6 January 2009 в 16:08
поделиться

4 ответа

Базовая Графика API является в значительной степени тем же в касании Какао и Какао. Читайте на CGPDFDocument, он должен предоставить Вам все, что необходимо будет представить страницы PDF. Вы не должны будете читать спецификацию PDF или пользоваться библиотекой для парсинга файлов PDF непосредственно. Вы будете, вероятно, для получения дополнительной информации о Базовой Графике / Кварц, 2D / и т.д., чтобы понять, как использовать те функции в приложении Какао.

15
ответ дан 8 December 2019 в 13:03
поделиться

На основе постепенно развивающейся политики Apple отклонения подачи заявок, которая уже копирует функциональность на iPhone I, волновался бы о проведении слишком большого количества времени, как раз когда новичок на чем-то, что является частью базового набора функций iPhone.

2
ответ дан 8 December 2019 в 13:03
поделиться

Это довольно тривиально. Функции CGPDFDocument позволят Вам делать что-либо, что Вы хотели бы сделать с файлом PDF.

1
ответ дан 8 December 2019 в 13:03
поделиться

IPhone и iPod touch уже могут просмотреть PDFs, поскольку одно из телевизионных объявлений в Великобритании показывает электронное письмо с вложением pdf (плавающих уроков) быть просматриваемым. Это может также просмотреть .doc, .xls, и так далее, поэтому если он создает приложение типа средства просмотра, затем поддерживающее, это также могло бы быть хорошее дополнение функции позже.

Это означает, что существует платформа PDF на этих устройствах, к которым необходимо будет получить доступ. По-видимому, Apple может оказать поддержку здесь, если он - заплативший разработчик. Синхронизация PDFs к устройству является фактической реальной трудностью, поскольку это не поддерживается iTunes. Я предполагаю, что необходимо было бы записать основанный на сети инструмент синхронизации, или иметь облако онлайн для содержания PDFs людей.

Устройство не поддерживает Flash, так использование PDF к инструментам преобразования Flash не будет работать.

0
ответ дан 8 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

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