如何修改substr函数实现从字符串第29位截取至首个连字符前内容
实现方法
直接调整substr的参数就能实现需求,不需要额外安装依赖包:
# 基于你原有substr逻辑修改 city_names <- substr(sample_list, start = 30, stop = regexpr("-", sample_list) - 1)
参数逻辑:
- 你之前写的
start=1, stop=29是截取前29位的固定前缀,现在把起始位置改成30,就是从前缀结束后的第一个字符开始截取 regexpr("-", sample_list)会批量返回每个URL里第一个连字符-所在的字符位置,减1之后就是连字符前最后一个字符的索引,正好作为截取的结束位置
运行这段代码得到的结果就是你需要的city1、acity2、bbcity3、ccccity4、dddddcity5。
如果不想硬编码前缀长度,避免后续前缀改动时还要重新数字符位置,可以直接用正则匹配提取,适配性更强:
# 正则方案,无需手动计算字符位置 city_names <- sub("^http://www.website.ca/extra/([^-]+)-.*", "\\1", sample_list)
这段代码会直接匹配固定前缀后、第一个-前的所有连续字符,直接提取为结果,只要URL整体结构不变,哪怕前缀长度调整也能正常运行。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

