在R语言中如何交换字符串内下划线前后的单词顺序
R语言实现下划线前后单词互换的方法
- 方法1:正则表达式替换(推荐,处理效率更高)
核心逻辑是通过捕获组匹配下划线前后的两个片段,直接反向拼接输出。单条字符串处理示例:sub("^(.*)_(.*)$", "\\2_\\1", "hello_wor")
返回结果为wor_hello
如果需要批量处理字符串向量,直接传入向量即可:
test_strings <- c("hello_wor", "hi_everyone", "test_case") result <- sub("^(.*)_(.*)$", "\\2_\\1", test_strings) # 输出结果:"wor_hello" "everyone_hi" "case_test"
- 方法2:分割后反转拼接(逻辑更直观)
如果不熟悉正则语法,可以先按下划线分割字符串,反转分割得到的片段后再用下划线拼接:
# 单条字符串处理函数 swap_underline <- function(input_str) { split_parts <- strsplit(input_str, "_")[[1]] paste(rev(split_parts), collapse = "_") } # 调用示例 swap_underline("hi_everyone") # 输出:"everyone_hi" # 处理字符串向量 test_strings <- c("hello_wor", "hi_everyone") result <- sapply(test_strings, swap_underline, USE.NAMES = FALSE)
注意:以上两种方法默认适配输入仅含1个下划线的场景。如果输入存在多个下划线,正则方法会将第一个下划线前的内容作为第一部分、最后一个下划线后的内容作为第二部分互换,中间内容保持不变;分割反转方法会将所有下划线分隔的片段完全倒序,可根据实际需求调整规则。
内容的提问来源于stack exchange,提问作者SiH
相关产品推荐
相关产品推荐

