startswith: Detect Pattern Occurrences at Start or End of Strings#
Description#
Determines if a string starts or ends with a match to a specified fixed pattern.
Usage#
startsWith(
x,
pattern = prefix,
...,
ignore_case = ignore.case,
fixed = TRUE,
ignore.case = FALSE,
prefix
)
endsWith(
x,
pattern = suffix,
...,
ignore_case = ignore.case,
fixed = TRUE,
ignore.case = FALSE,
suffix
)
Arguments#
|
character vector whose elements are to be examined |
|
character vector with patterns to search for |
|
further arguments to |
|
single logical value; indicates whether matching should be case-insensitive |
|
single logical value; |
|
alias to the |
|
aliases to the |
Details#
These functions are fully vectorised with respect to both arguments.
For matching with regular expressions, see grepl
with patterns like "^prefix"
and "suffix$"
.
Value#
Each function returns a logical vector, indicating whether a pattern match has been detected or not. They preserve the attributes of the longest inputs (unless they are dropped due to coercion).
Differences from Base R#
Replacements for base startsWith
and endsWith
implemented with stri_startswith
and stri_endswith
.
there are inconsistencies between the argument order and naming in
grepl
,strsplit
, andstartsWith
(amongst others); e.g., where the needle can precede the haystack, the use of the forward pipe operator,|>
, is less convenient [fixed here]grepl
also features theignore.case
argument [added here]partial recycling without the usual warning [fixed here]
no attributes preserved whatsoever [fixed here]
not suitable for natural language processing [fixed here – use
fixed=NA
]
See Also#
The official online manual of stringx at https://stringx.gagolewski.com/
Examples#
startsWith("ababa", c("a", "ab", "aba", "baba", NA))
## [1] TRUE TRUE TRUE FALSE NA
outer(
c("aba", "abb", "abc", "baba", "bac"),
c("A", "B", "C"),
endsWith,
ignore_case=TRUE
)
## [,1] [,2] [,3]
## [1,] TRUE FALSE FALSE
## [2,] FALSE TRUE FALSE
## [3,] FALSE FALSE TRUE
## [4,] TRUE FALSE FALSE
## [5,] FALSE FALSE TRUE
x <- c("Mario", "mario", "M\u00E1rio", "M\u00C1RIO", "Mar\u00EDa", "Rosario")
x[startsWith(x, "mario", ignore_case=TRUE)]
## [1] "Mario" "mario"
x[startsWith(x, "mario", fixed=NA, strength=1L)]
## [1] "Mario" "mario" "Mário" "MÁRIO"