【问题标题】:Drop characters from string based on position根据位置从字符串中删除字符
【发布时间】:2013-10-11 16:58:28
【问题描述】:

有没有一种简单的方法可以从字符串中删除特定字符。在下面的示例中,我想从向量的每个元素中删除最后三个字符。

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

【问题讨论】:

    标签: r


    【解决方案1】:

    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_sub 的默认值是 to = -1L,因此要删除最后三个字符,它是 -1 - 3 = -4

    【讨论】:

      【解决方案2】:

      使用gsub(),删除$ 前面的三个字符(表示“字符串结尾”的正则表达式字符):

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

      【讨论】:

        【解决方案3】:

        另一种正则表达式方法:

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

        【讨论】:

        • 值得注意的是,这个正则表达式保留最后一个空格之前的所有内容,而不是删除最后三个字符。对于示例数据,这两个操作给出了相同的结果(尽管有问题描述,这可能是 OP 想要的语义),但在不同的数据中可能会看到差异。
        • 是的,Brian 这取决于空间,因为我认为这就是数据的样子。如果最后一个字符不一致(尽管我相信在这种情况下),我在这里采用的方法可能会很有用。我发帖是因为这种方法与 Josh 的方法有点不同,未来的搜索者可能会发现这种方法对他们的情况更有用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-29
        • 2022-11-14
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多