https://github.com/cran/pracma
Revision b5e4bf28fcba9f5eaffbeecfb0bc307452d074ee authored by Hans W. Borchers on 01 November 2014, 00:00:00 UTC, committed by Gabor Csardi on 01 November 2014, 00:00:00 UTC
1 parent d57c14d
Tip revision: b5e4bf28fcba9f5eaffbeecfb0bc307452d074ee authored by Hans W. Borchers on 01 November 2014, 00:00:00 UTC
version 1.7.7
version 1.7.7
Tip revision: b5e4bf2
strfind.R
##
## s t r f i n d . R Find Substrings
##
strfind <- function(s1, s2, overlap = TRUE) {
stopifnot(is.character(s1), is.character(s2))
if (length(s2) != 1)
stop("Pattern 's2' must be a character vector of length 1.")
L <- list()
for (i in 1:length(s1)) {
si <- s1[i]
if (nchar(si) < nchar(s2)) {
L[[i]] <- c()
} else {
L[[i]] <- findstr(s2, si, overlap=overlap)
}
}
if (length(s1) == 1) L <- unlist(L)
return(L)
}
strfindi <- function(s1, s2, overlap = TRUE) {
stopifnot(is.character(s1), is.character(s2))
strfind(tolower(s1), tolower(s2), overlap=overlap)
}
findstr <- function(s1, s2, overlap = TRUE) {
stopifnot(is.character(s1), is.character(s2))
if (length(s1) != 1 || length(s2) != 1)
stop("Arguments must be character vectors of length 1.")
if (nchar(s1) > nchar(s2)) {
s <- s1; s1 <- s2; s2 <- s
}
if (s1 == '') return(c())
n1 <- nchar(s1)
n2 <- nchar(s2)
r <- c()
i <- 1
while (i <= n2 - n1 + 1) {
if (s1 == substring(s2, i, i + n1 - 1)) {
r <- c(r, i)
if (!overlap) i <- i + n1 - 1
}
i <- i + 1
}
return(r)
}
Computing file changes ...