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"