2017-06-02 98 views
-1

我有一个正在读入的字符串向量,但是每个条目在我想要删除的字符串的开始和结尾都有垃圾字符。我的问题是,我不知道哪些字符是垃圾,直到它们出现在每个条目中。删除字符串中的重复字符r

即: 向量包含:

nRsp; A810SS-Q1D-01 “

nRsp; C5A19A60WESD04”

nRsp; 461961“

在这种情况下,nRsp

;是垃圾在开始和“是结束垃圾。垃圾值应该在相对于矢量的开始和结束的相同位置出现,但我需要一些方法来首先找到它们,然后删除它们。

谢谢!

+0

开始时它总是'nRsp;'? – hwnd

+0

不,每次程序运行时它都会是一组不同的字符 –

回答

0

如果你想找到你的向量的所有元素都在开始和删除它们之前到底有共同的特点,你可以这样做:

library(purrr) 
## Replicating the data 
v = c("nRsp ;A810SS-Q1D-01 \"","nRsp ;C5A19A60WESD04 \"","nRsp ;461961 \"") 
## Split each string into a vector 
l = strsplit(v,"") 
## Find the common parts at the start and end of all elements in the list 
start = 1 
while(every(l,function(x) sum(x[1:start]==l[[1]][1:start])==start)){start=start+1} 
end = 1 
while(every(l,function(x) sum(rev(x)[1:end]==rev(l[[1]])[1:end])==end)){end=end+1} 
## Remove the common 'garbage' from each element of the list 
v2 = sapply(l,function(x) paste(x[start:(length(x)-end+1)],collapse="")) 

这将返回:

[1] "A810SS-Q1D-01" "C5A19A60WESD04" "461961"