Я пытаюсь расширить диапазон чисел, в настоящее время разделенных тире, чтобы включить все числа.
Хорошей новостью является то, что я нашел код (не мой), который помог со следующей конфигурацией:
"Бальный зал 1-3" дает "Бальный зал 1, Бальный зал 2, Бальный зал 3", что я и хочу. Проблема в том, что это обусловлено отсутствием пробелов до и после тире. В настоящее время "Бальный зал 1 - 3" возвращает "Бальный зал 1 -3, Бальный зал 1 - 3, Бальный зал 1 - 3"; что не является желаемым выходом.
Обратите внимание, что по нескольким причинам пробелы до и после тире должны быть сохранены. Ввод "Бального зала 1 - 3" должен оставаться прежним.
## Dealing with Dash Seperated Sequences of Numbers
expand.dash <- function(dashed) {
limits <- as.numeric(unlist(strsplit(dashed, '-')))
seq(limits[1], limits[2])
}
expand.ballrooms <- function(txt) {
str <- gsub('\\d+-\\d+', '%d', txt)
dashed_str <- gsub('[a-zA-Z ]+', '', txt)
sprintf(str, expand.dash(dashed_str))
}
expand.ballrooms("Ballroom 1-3")
# this works but the line below fails to output the desired result
expand.ballrooms("Ballroom 1 - 3")
# Result should be identical to the the output returned by the previous line.
Хотя сообщения об ошибках не появляются, пробел до и после тире приводит к тому, что вывод просто повторяется.