移动特殊字符的位置

时间:2016-06-30 05:28:29

标签: r

我有一个完整的字符串向量,其中唯一的特殊符号是“ - ”

要明确示例字符串类似于23 C-Exam

我想改变23-C考试

我基本上希望R找到“ - ”的位置并将其移回2个空格。

我觉得这是一项非常简单的任务,虽然我无法弄清楚如何。

假设每当R找到“ - ”时,两个空格就是空格,就像上面的例子一样。

3 个答案:

答案 0 :(得分:3)

regex尝试:

x <- c("23 C-Exam","45 D-Exam")
#[1] "23 C-Exam" "45 D-Exam"
sub(".(.)-", "-\\1 ", x)
#[1] "23-C Exam" "45-D Exam"

在字符.之前找到字符(.),然后在文字短划线-之后找到。
替换为文字短划线-,来自\\1上方的已保存字符,并使用空格

覆盖短划线

答案 1 :(得分:2)

使用正则表达式可能有一种流畅的方式,但一种方法是简单地将所需输出的各个部分拼接在一起。首先,我在包含-的字符串中找到索引,然后使用substr()将输出拼凑在一起。

pos <- regexpr("-", "23 C-Exam")
x <- "23 C-Exam"

x <- paste0(substr(x, 1, pos-3),
            "-",
            substr(x, pos-1, pos-1),
            " ",
            substr(x, pos+1, nchar(x)))

> x
[1] "23-C Exam"

答案 2 :(得分:1)

我们也可以使用chartr

chartr(" -", "- ", x)
#[1] "23-C Exam" "45-D Exam"

数据

x <- c("23 C-Exam","45 D-Exam")