R语言cli——ansi_substr():ANSI彩色字符串的子字符串

Package cli version 3.6.0


Description

这是base::substr()的颜色感知副本。它的工作原理与原来的完全相同,但保留了子字符串中的颜色。在计算字符串中的位置时,忽略ANSI转义序列。


Usage

ansi_substr(x, start, stop)

Arguments

参数【x】:字符向量,可能是ANSI样式的,或者是强制转换为字符的向量。

参数【start】:起始索引或索引,循环以匹配参数【x】的长度。

参数【stop】:结束索引或索引,循环以匹配参数【x】的长度。


Value

长度与参数【x】相同的字符向量,包含请求的子字符串。ANSI样式被保留。


Examples

> str <- paste(
+     col_red("red"),
+     "default",
+     col_green("green")
+ )
> cat(str, "
")
red default green 
> cat(ansi_substr(str, 1, 5), "
")
red d 
> cat(ansi_substr(str, 1, 15), "
")
red default gre 
> cat(ansi_substr(str, 3, 7), "
")
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, "
")
another multi-style text 
> cat(ansi_substr(c(str, str2), c(3,5), c(7, 18)), sep = "
")
d def
her multi-styl
> substr(ansi_strip(c(str, str2)), c(3,5), c(7, 18))
[1] "d def"          "her multi-styl"