The features of strex that were deemed the most interesting have been given their own vignettes. However, the package was intended as a miscellany of useful functions, so the functions demonstrated here encapsulate the spirit of this package, i.e. functions that save R string manipulators time.
Sometimes you don’t want to know whether something is numeric, just whether or not it could be. Now you can find out with str_can_be_numeric().
To get currencies and amounts mentioned in strings, there are str_get_currency() and str_get_currencies(). str_get_currency() just returns the first seen currency symbol (really just the character before the first number). str_get_currencies() returns all currencies and amounts mentioned in a string. str_get_currencies() only takes arguments of length 1, so to use it with multiple strings, you’ll need to use purrr::map().
string <- c("Alan paid £5", "Joe paid $7")
str_get_currency(string)
#> [1] "£" "$"
string <- c("€1 is $1.17", "£1 is $1.29")
str_get_currency(string) # only gets the first mentioned
#> [1] "€" "£"
str_get_currencies(string[1])
#> # A tibble: 2 x 2
#> currency amount
#> <chr> <dbl>
#> 1 € 1
#> 2 $ 1.17
purrr::map(string, str_get_currencies)
#> [[1]]
#> # A tibble: 2 x 2
#> currency amount
#> <chr> <dbl>
#> 1 € 1
#> 2 $ 1.17
#>
#> [[2]]
#> # A tibble: 2 x 2
#> currency amount
#> <chr> <dbl>
#> 1 £ 1
#> 2 $ 1.29This is a simple wrapper around stringr::str_sub().
We can give files a given extension, leaving them alone if they already have it.
string <- c("spreadsheet1.csv", "spreadsheet2")
str_give_ext(string, "csv")
#> [1] "spreadsheet1.csv" "spreadsheet2.csv"If the file already has an extension, we can append one or replace it.
I’m not mad on CamelCase, I often want to deconstruct it.
This is something I did a lot to avoid using regular expression. Don’t do it for that purpose. Learn regex. https://regexone.com/ is a very good start.
What if something is needlessly surrounded by parentheses and we want to get rid of them?
string <- "(((Why all the parentheses?)))"
string %>%
str_trim_anything("(", side = "left") %>%
str_trim_anything(")", side = "r")
#> [1] "Why all the parentheses?"Note that the pattern argument here isn’t regular expression, just plain.