如果名称用逗号分隔,请反转名称

时间:2019-05-23 04:56:05

标签: r regex string

如果有名字和姓氏,例如“ nandan,vivek”。我想显示为“ vivek nandan”。

n<-("nandan,vivek")

结果:

[1] vivek nandan

其中名字:vivek

姓氏:nandan

这是作者姓名。

2 个答案:

答案 0 :(得分:0)

我们可以在此处尝试使用sub

input <- "nankin,vivek"
sub("([^,]+),\\s*(.*)", "\\2 \\1", input)

[1] "vivek nankin"

上面使用的正则表达式模式在单独的捕获组中匹配姓氏和名字。然后,以相反的顺序将这些捕获组替换,并用一个空格隔开。

答案 1 :(得分:0)

一个选项为sub,以捕获字母([a-z]+)后跟,的子字符串,并再次捕获下一个单词([a-z]+)。在替换中,反转反向引用的顺序

sub("([a-z]+),([a-z]+)", "\\2 \\1", n)
#[1] "vivek nandan"

非正则表达式选项是先分割字符串,然后pasterev拼字

paste(rev(strsplit(n, ",")[[1]]), collapse=" ")
#[1] "vivek nandan"

或提取wordpaste

library(stringr)
paste(word(n, 2, sep=","), word(n, 1, sep=","))
#[1] "vivek nandan"

数据

n<- "nandan,vivek"