startsWith()
is used to detect fixed initial substrings; it is more
readable and more efficient than equivalents using grepl()
or substr()
.
c.f. startsWith(x, "abc")
, grepl("^abc", x)
,
substr(x, 1L, 3L) == "abc"
.
string_boundary_linter(allow_grepl = FALSE)
Logical, default FALSE
. If TRUE
, usages with grepl()
are ignored. Some authors may prefer the NA
input to FALSE
output
conciseness offered by grepl()
, which doesn't have a direct equivalent
with startsWith()
or endsWith()
.
efficiency, readability
Ditto for using endsWith()
to detect fixed terminal substrings.
Note that there is a difference in behavior between how grepl()
and startsWith()
(and endsWith()
) handle missing values. In particular, for grepl()
, NA
inputs
are considered FALSE
, while for startsWith()
, NA
inputs have NA
outputs.
That means the strict equivalent of grepl("^abc", x)
is
!is.na(x) & startsWith(x, "abc")
.
We lint grepl()
usages by default because the !is.na()
version is more explicit
with respect to NA
handling -- though documented, the way grepl()
handles
missing inputs may be surprising to some readers.
linters for a complete list of linters available in lintr.