Вы можете использовать это, чтобы отключить будущие даты. Внутри функции document.ready
поместите
//Display Only Date till today //
var dtToday = new Date();
var month = dtToday.getMonth() + 1; // getMonth() is zero-based
var day = dtToday.getDate();
var year = dtToday.getFullYear();
if(month < 10)
month = '0' + month.toString();
if(day < 10)
day = '0' + day.toString();
var maxDate = year + '-' + month + '-' + day;
$('#dateID').attr('max', maxDate);
и в форму
Вот рабочий jFiddle Demo
Для второго ответа вы можете использовать gsub
, чтобы удалить из строки все, что не является числом, а затем разбить строку следующим образом:
unique(as.numeric(unlist(strsplit(gsub("[^0-9]", "", unlist(ll)), ""))))
# [1] 7 6 1 5 2
Для первого ответа, аналогично используя strsplit
,
unique(na.omit(as.numeric(unlist(strsplit(unlist(ll), "[^0-9]+")))))
# [1] 7 667 11 5 2
PS: не называйте вашу переменную list
(так как есть встроенная функция list
). Я назвал ваши данные как ll
.
Вот еще один ответ, который использует gregexpr
, чтобы найти числа, и regmatches
, чтобы извлечь их:
l <- c("djud7+dg[a]hs667", "7fd*hac11(5)", "2tu,g7gka5")
temp1 <- gregexpr("[0-9]", l) # Individual digits
temp2 <- gregexpr("[0-9]+", l) # Numbers with any number of digits
as.numeric(unique(unlist(regmatches(l, temp1))))
# [1] 7 6 1 5 2
as.numeric(unique(unlist(regmatches(l, temp2))))
# [1] 7 667 11 5 2
# extract the numbers:
nums <- stri_extract_all_regex(list, "[0-9]+")
# Make vector and get unique numbers:
nums <- unlist(nums)
nums <- unique(nums)
И это ваше первое решение
Для второго решения я бы использовал substr
:
nums_first <- sapply(nums, function(x) unique(substr(x,1,1)))
Вы можете использовать ?strsplit
(как предложено в ответе @ Аруна в Извлечение чисел из векторов (строк) ):
l <- c("djud7+dg[a]hs667", "7fd*hac11(5)", "2tu,g7gka5")
## split string at non-digits
s <- strsplit(l, "[^[:digit:]]")
## convert strings to numeric ("" become NA)
solution <- as.numeric(unlist(s))
## remove NA and duplicates
solution <- unique(solution[!is.na(solution)])
# [1] 7 667 11 5 2
Используйте strsplit, используя pattern в качестве инверсии числовых цифр: 0-9
Для приведенного вами примера сделайте следующее:
tmp <- sapply(list, function (k) strsplit(k, "[^0-9]"))
Затем просто объедините все ` устанавливает 'в списке, вот так:
tmp <- Reduce(union, tmp)
Тогда вам нужно только удалить пустую строку.
Решение stringr
с str_match_all
и конвейерными операторами. Для первого решения:
library(stringr)
str_match_all(ll, "[0-9]+") %>% unlist %>% unique %>% as.numeric
Второе решение:
str_match_all(ll, "[0-9]") %>% unlist %>% unique %>% as.numeric
(Примечание: я также назвал список ll
)
Проверьте функцию str_extract_numbers()
из пакета strex
.
pacman::p_load(strex)
list=list()
list[1] = "djud7+dg[a]hs667"
list[2] = "7fd*hac11(5)"
list[3] = "2tu,g7gka5"
charvec <- unlist(list)
print(charvec)
#> [1] "djud7+dg[a]hs667" "7fd*hac11(5)" "2tu,g7gka5"
str_extract_numbers(charvec)
#> [[1]]
#> [1] 7 667
#>
#> [[2]]
#> [1] 7 11 5
#>
#> [[3]]
#> [1] 2 7 5
unique(unlist(str_extract_numbers(charvec)))
#> [1] 7 667 11 5 2
Создано в 2018-09-03 с помощью пакета представ (v0.2.0).