This is the color-aware counterpart of base::substring().
It works exactly like the original, but keeps the colors in the
substrings. The ANSI escape sequences are ignored when
calculating the positions within the string.
ansi_substring(text, first, last = 1000000L)Character vector of the same length as x, containing
the requested substrings. ANSI styles are retained.
Other ANSI string operations:
ansi_align(),
ansi_columns(),
ansi_nchar(),
ansi_strsplit(),
ansi_strtrim(),
ansi_strwrap(),
ansi_substr(),
ansi_toupper(),
ansi_trimws()
str <- paste(
col_red("red"),
"default",
col_green("green")
)
cat(str, "\n")
#> red default green
cat(ansi_substring(str, 1, 5), "\n")
#> red d
cat(ansi_substring(str, 1, 15), "\n")
#> red default gre
cat(ansi_substring(str, 3, 7), "\n")
#> d def
substring(ansi_strip(str), 1, 5)
#> [1] "red d"
substring(ansi_strip(str), 1, 15)
#> [1] "red default gre"
substring(ansi_strip(str), 3, 7)
#> [1] "d def"
str2 <- paste(
"another",
col_red("multi-", style_underline("style")),
"text"
)
cat(str2, "\n")
#> another multi-style text
cat(ansi_substring(str2, c(3,5), c(7, 18)), sep = "\n")
#> other
#> her multi-styl
substring(ansi_strip(str2), c(3,5), c(7, 18))
#> [1] "other" "her multi-styl"