我有这样的字符串:
x<-c("Total_Login.P00B.DC1")
或
x<-c("Total_Login..P00B.DC1")
我需要在第一个点(。)之后grep everthing并用短划线替换字符串中的任何其他特殊字符( - )
我试过这样的事情
gsub(".*\\.(.*)", "\\1",x)
但是给了我DC1
我需要最终结果:
P00B-DC1
答案 0 :(得分:4)
我会在.
上拆分,删除第一个元素并粘贴在一起:
paste0(strsplit(x,"\\.+")[[1]][-1],collapse="-")
# [1] "P00B-DC1"
对于字符串向量(来自@ akrun的评论):
xvec <- c("Total_Login.P00B.DC1", "Total_Login..P00B.DC1")
mycleaner <- function(x) paste0(strsplit(x,"\\.+")[[1]][-1],collapse="-")
sapply(xvec, mycleaner)
# Total_Login.P00B.DC1 Total_Login..P00B.DC1
# "P00B-DC1" "P00B-DC1"
OP无法定义“特殊字符”,但这似乎适用于示例。
答案 1 :(得分:1)
试试这个:
x<-c("Total_Login.P00B.DC1", "Total_Login..P00B.DC1")
gsub('.*\\.+(.*\\..*)','\\1',x)
答案 2 :(得分:1)
尝试
gsub('[.]', '-', sub('[^.]+\\.+', '', x))
#[1] "P00B-DC1" "P00B-DC1" "POOB-DC1-DC2"
x<-c("Total_Login.P00B.DC1", "Total_Login..P00B.DC1",
"Total_Login..POOB.DC1.DC2")