如何用R编程删除字符串末尾.xlsx前的多余空格(支持dplyr/base R)
解决方案
base R 实现
- 核心逻辑:通过正则表达式精准匹配文件名末尾
.xlsx前的1个或多个空格,直接替换为无空格的.xlsx,不会修改文件名中间的正常空格。 - 示例代码:
# 你的原始文件名向量 file_names <- c( "INTERLINE BRANDS.xlsx", "POLY-AMERICA, LP.xlsx", "SO TTI POWER EQUIPMENT .xlsx", "GENERAC SO.xlsx", "SO TOTER LLC .xlsx", "SO IMPERIAL INDUSTRIAL .xlsx", "SO MTDARNOLD PRODUCTS .xlsx", "SO KOHLER GENS.xlsx", "RUBBERMAID CONSUMER .xlsx", "SO MILWAUKEE .xlsx", "SO CINDERELLA INC .xlsx", "MAKITA .xlsx", "SO THE TORO COMPANY .xlsx", "SO RUBBERMAID SPECIALTY.xlsx", "SO AMES TRUE TEMPER , I.xlsx", "SO POLYWOOD .xlsx", "ZEPENFORCER.xlsx", "TIGER SUPPLIES .xlsx", "INTERLINE BRANDS, INC..xlsx", "SO MWE INVESTMENTS, LLC.xlsx", "SO DIMPLEX NORTH AMERIC.xlsx" ) # 执行空格清理 clean_names <- sub("\\s+\\.xlsx$", ".xlsx", file_names)
- 效果验证:原始值
SO MILWAUKEE .xlsx处理后为SO MILWAUKEE.xlsx,完全符合预期。
dplyr/tidyverse 实现
如果需要处理数据框中的文件名列,用tidyverse生态的stringr包操作更统一:
library(dplyr) library(stringr) # 假设你的数据框名为df,存储文件名的列名为file_name df <- df %>% mutate(clean_file_name = str_replace(file_name, "\\s+\\.xlsx$", ".xlsx"))
- 说明:
str_replace和base R的sub逻辑一致,只会替换第一次匹配到的末尾符合规则的内容,不会影响文件名其他位置的字符。
内容的提问来源于stack exchange,提问作者Jaskeil
相关产品推荐
相关产品推荐

