fansi (version 0.3.0)

strip_ctl: Strip ANSI Control Sequences

Description

Removes Control Sequences from strings. By default it will strip all known Control Sequences, including ANSI CSI sequences, two character sequences starting with ESC, and all C0 control characters, including newlines. You can fine tune this behavior with the strip parameter. strip_sgr only strips ANSI CSI SGR sequences.

Usage

strip_ctl(x, strip = "all", warn = getOption("fansi.warn"))

strip_sgr(x, warn = getOption("fansi.warn"))

Arguments

x

a character vector or object that can be coerced to character.

strip

character, any combination of the following values (see details):

  • "nl": strip newlines.

  • "c0": strip all other "C0" control characters (i.e. x01-x1f), except for newlines and the actual ESC character.

  • "sgr": strip ANSI CSI SGR sequences.

  • "csi": strip all non-SGR csi sequences.

  • "esc": strip all other escape sequences.

  • "all": all of the above, except when used in combination with any of the above, in which case it means "all but" (see details).

warn

TRUE (default) or FALSE, whether to warn when potentially problematic Control Sequences are encountered. These could cause the assumptions fansi makes about how strings are rendered on your display to be incorrect, for example by moving the cursor (see fansi).

Value

character vector of same length as x with ANSI escape sequences stripped

Details

The strip value contains the names of non-overlapping subsets of the known Control Sequences (e.g. "csi" does not contain "sgr", and "c0" does not contain newlines). The one exception is "all" which means strip every known sequence. If you combine "all" with any other option then everything but that option will be stripped.

See Also

fansi for details on how Control Sequences are interpreted, particularly if you are getting unexpected results.

Examples

Run this code
# NOT RUN {
string <- "hello\033k\033[45p world\n\033[31mgoodbye\a moon"
strip_ctl(string)
strip_ctl(string, c("nl", "c0", "sgr", "csi", "esc")) # equivalently
strip_ctl(string, "sgr")
strip_ctl(string, c("c0", "esc"))

## everything but C0 controls, we need to specify "nl"
## in addition to "c0" since "nl" is not part of "c0"
## as far as the `strip` argument is concerned
strip_ctl(string, c("all", "nl", "c0"))

## convenience function, same as `strip_ctl(strip='sgr')`
strip_sgr(string)
# }

Run the code above in your browser using DataLab