Break a string wherever you go from a numeric character to a non-numeric or
vice-versa. Keep the whole string, just split it up. Vectorised over
string.
Usage
str_split_by_numbers(
string,
decimals = FALSE,
leading_decimals = FALSE,
negs = FALSE,
sci = FALSE,
big_mark = "",
commas = FALSE
)Arguments
- string
A string.
- decimals
Do you want to include the possibility of decimal numbers (
TRUE) or not (FALSE, the default).- leading_decimals
Do you want to allow a leading decimal point to be the start of a number?
- negs
Do you want to allow negative numbers? Note that double negatives are not handled here (see the examples).
- sci
Make the search aware of scientific notation e.g. 2e3 is the same as 2000.
- big_mark
A character. Allow this character to be used as a thousands separator. This character will be removed from between digits before they are converted to numeric. You may specify many at once by pasting them together e.g.
big_mark = ",_"will allow both commas and underscores. Internally, this will be used inside a[]regex block so e.g."a-z"will behave differently to"az-". Most common separators (commas, spaces, underscores) should work fine.- commas
Deprecated. Use
big_markinstead.
See also
Other splitters:
str_split_camel_case()
Examples
str_split_by_numbers(c("abc123def456.789gh", "a1b2c344"))
#> [[1]]
#> [1] "abc" "123" "def" "456" "." "789" "gh"
#>
#> [[2]]
#> [1] "a" "1" "b" "2" "c" "344"
#>
str_split_by_numbers("abc123def456.789gh", decimals = TRUE)
#> [[1]]
#> [1] "abc" "123" "def" "456.789" "gh"
#>
str_split_by_numbers(c("22", "1.2.3"), decimals = TRUE)
#> Warning: `NA`s introduced by ambiguity.
#> ℹ The first such ambiguity is in string number 2 which is '1.2.3'.
#> ✖ The offending part of that string is '1.2.3'.
#> [[1]]
#> [1] "22"
#>
#> [[2]]
#> [1] NA
#>
