Package?cli?version 3.6.0
这是base::substr()的颜色感知副本。它的工作原理与原来的完全相同,但保留了子字符串中的颜色。在计算字符串中的位置时,忽略ANSI转义序列。
ansi_substr(x, start, stop)
参数【x】:字符向量,可能是ANSI样式的,或者是强制转换为字符的向量。
参数【start】:起始索引或索引,循环以匹配参数【x】的长度。
参数【stop】:结束索引或索引,循环以匹配参数【x】的长度。
长度与参数【x】相同的字符向量,包含请求的子字符串。ANSI样式被保留。
> str <- paste(
+ col_red("red"),
+ "default",
+ col_green("green")
+ )
> cat(str, "\n")
red default green
> cat(ansi_substr(str, 1, 5), "\n")
red d
> cat(ansi_substr(str, 1, 15), "\n")
red default gre
> cat(ansi_substr(str, 3, 7), "\n")
d def
> substr(ansi_strip(str), 1, 5)
[1] "red d"
> substr(ansi_strip(str), 1, 15)
[1] "red default gre"
> substr(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_substr(c(str, str2), c(3,5), c(7, 18)), sep = "\n")
d def
her multi-styl
> substr(ansi_strip(c(str, str2)), c(3,5), c(7, 18))
[1] "d def" "her multi-styl"