使用Gsub捕获冒号后的第一个字母:并将其转换为大写

时间:2017-12-05 04:57:06

标签: r regex gsub

我需要捕获冒号后的第一个字母:并将其转换为大写。我的意见是:

ID1423:Bellatorias obiri           18 Aug 2006
ID2533:Caretta caretta             16 Jul 2000
ID342:Cyclodomorphus praealtus     24 Dec 2009
ID8777:Dermochelys coriacea         8 Jan 2009
ID922:Egernia stokesii badia       16 Jul 2000

我使用的代码是reptiledata< - gsub(“((\ w)(\ w +)”,“:\ U \ 1”,reptile_data,perl = TRUE)

我得到的输出是这样的:

> reptiledata
[1] "c(:1, :1, :2, 8, :1, :1, :1, :1, :1, :1, :1, :2, 4, :1, :1, :1)"  
[2] "c(2, 6, 3, 5, 6, 6, 6, 6, 6, 6, 6, 4, 1, 2, 6, 6)"                

etc...

我需要一个通用的gsub代码,它会将冒号后的许多首字母字符转换为大写而不仅仅是显示的字符。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

尝试在Perl模式下使用gsub和大写替换修饰符\U

gsub(":([A-Za-z])", ":\\U\\1", str, perl=TRUE)

这将替换任何冒号,后跟一个带冒号的单个字母,后跟该字母的大写版本。如果您发现它不会被修改的文本,我们可以使这个模式更具体。

Demo