2013-10-11 62 views
2

是否有從字符串中刪除特定字符的簡單方法?在下面的例子中,我想從矢量的每個元素中刪除最後三個字符。根據位置從字符串中刪除字符

string<-c("Autauga AL", "Bald Win Av", "Barbour AL", "Bibb AL" , "Blount At" , "Bullock AL") 

回答

9

strtrimnchar怎麼樣?

strtrim(string, nchar(string)-3) 
# [1] "Autauga" "Bald Win" "Barbour" "Bibb"  "Blount" "Bullock" 

您也可以使用 「stringi」 包:

library(stringi) 
stri_sub(string, 1, -4) 
# [1] "Autauga" "Bald Win" "Barbour" "Bibb"  "Blount" "Bullock" 

默認爲stri_subto = -1L,所以要去除最後三個字符是-1 - 3 = -4

4

隨着gsub(),去掉前面的$三個字符(正則表達式字符代表「字符串的結束」):

gsub(".{3}$", "", string) 
[1] "Autauga" "Bald Win" "Barbour" "Bibb"  "Blount" "Bullock" 
0

另一個正則表達式的方法:

gsub("(.*)\\s.*", "\\1", string) 
## [1] "Autauga" "Bald Win" "Barbour" "Bibb"  "Blount" "Bullock" 
+1

值得一提的是,這個正則表達式使一切在最後一個空格之前,不會丟棄最後三個字符。對於示例數據,這兩個操作給出了相同的結果(並且這可能是OP想要的語義,儘管存在問題描述),但是可以在不同數據中看到差異。 –

+1

是的,布賴恩這依賴於空間,因爲我認爲這是數據的樣子。如果最後的字符不一致(儘管我相信它在這種情況下),我在這裏的方法可能會有用。我之所以發佈是因爲這種方法與喬希有點不同,未來的搜索者可能會發現這種方法對他們的情況更有用。 –