通过正斜杠或什么都不拆分字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过正斜杠或什么都不拆分字符串相关的知识,希望对你有一定的参考价值。

我想拆分这个向量

c("CC", "C/C")

[[1]]
[1] "C" "C"

[[2]]
[1] "C" "C"

我的最终数据应如下所示:

c("C_C", "C_C")

因此,我需要一些regex,但没有找到如何解决“非空间”部分:

strsplit(c("CC", "C/C"),"|/")
答案

您可以使用sub(或gsub,如果它在您的字符串中出现多次)直接替换任何内容或正斜杠与下划线(捕获一个字符周围):

sub("(\w)(|/)(\w)", "\1_\3", c("CC", "C/C"))
#[1] "C_C" "C_C"
另一答案

我们可以在每个字符处拆分字符串,省略“/”和paste它们在一起。

sapply(strsplit(x, ""), function(v) paste0(v[v!= "/"], collapse = "_"))

#[1] "C_C" "C_C"

数据

x <- c("CC", "C/C")
另一答案

我们可以用

lapply(strsplit(v1, "/|"), function(x) x[nzchar(x)])

或者使用正则表达式的外观

strsplit(v1, "(?<=[^/])(/|)", perl = TRUE)
#[[1]]
#[1] "C" "C"

#[[2]]
#[1] "C" "C"

如果最终输出应该是矢量,那么

gsub("(?<=[^/])(/|)(?=[^/])", "_", v1, perl = TRUE)
#[1] "C_C" "C_C"

以上是关于通过正斜杠或什么都不拆分字符串的主要内容,如果未能解决你的问题,请参考以下文章

jquery 冒号转义 为啥双斜杠

为什么QFileDialog使用斜杠而不是反斜杠?

为啥 QFileDialog 使用斜杠而不是反斜杠?

文件路径的正斜杠(/)与反斜杠()

文件路径的正斜杠(/)与反斜杠()

反斜杠瘟疫和重新分裂的问题