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

Using Gsub to capture the first letter after a colon : and transform it into uppercase

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

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", 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 代码,它将冒号后的许多首字母字符转换为大写,而不仅仅是显示的字符。感谢您的帮助!

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

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

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

Demo