【问题标题】:conditionally removing first two letter of every entry in a string in R有条件地删除R中字符串中每个条目的前两个字母
【发布时间】:2022-02-04 04:50:02
【问题描述】:

我有一个带有一些代码的向量。但是,由于未知原因,一些代码以 X# 开头(# 是数字 0-9)。如果我的矢量项确实以 x# 开头,我需要删除前两个字母。

例子:

codes <- c('x0fa319-432f39-4fre78', '23weq0-4fsf198-417203', 'x2431-5435-1242-qewf')
expectedResult <- c('fa319-432f39-4fre78', '23weq0-4fsf198-417203', '431-5435-1242-qewf')

我尝试使用str_replacegsub,但我无法正确使用:

gsub("X\\d", "", codes)

但这会删除 x#,即使它位于字符串的中间。

有什么办法吗?

【问题讨论】:

  • 您在gsub() 中使用了大写X 而不是x。如果你改变它,它会起作用。如果您希望它可能出现在其他地方,也可以将其用作 ^x\\d 以仅在开头匹配该模式。

标签: r text replace str-replace gsub


【解决方案1】:

你可以使用

codes <- c('x0fa319-432f39-4fre78', '23weq0-4fsf198-417203', 'x2431-5435-1242-qewf')
sub("^x\\d", "", codes, ignore.case=TRUE)

请参阅R demo

^x\d 模式匹配 x 和字符串开头的任何数字。

sub 仅替换第一个匹配项。

ignore.case=TRUE 启用不区分大小写的匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多