替换文本
本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 5 课,共 64 课。
sub(pattern, replacement, x) 会替换每个字符串中的第一个匹配项,而 gsub() 会替换所有匹配项。和 grepl() 一样,fixed = TRUE 会将模式视为纯文本。
date <- "2024-01-15"
print(sub("-", "/", date, fixed = TRUE))
print(gsub("-", "/", date, fixed = TRUE))输出:
[1] "2024/01-15"
[1] "2024/01/15"替换为空字符串可以删除匹配项。在将文本转换为数字之前,这样可以清理文本:
price <- "$1,299.00"
clean <- gsub(",", "", sub("$", "", price, fixed = TRUE), fixed = TRUE)
print(clean)
print(as.numeric(clean) * 2)输出:
[1] "1299.00"
[1] 2598如果不使用 fixed = TRUE,这个模式就是正则表达式。这里有两个有用的部分:[0-9] 匹配任意数字,+ 会将它前面的部分重复一次或多次,因此 " +" 可以匹配一连串空格。
msg <- "call me at 555 0199"
print(gsub(" +", " ", msg))
print(gsub("[0-9]", "#", msg))输出:
[1] "call me at 555 0199"
[1] "call me at ### ####"和其他字符串函数一样,sub() 和 gsub() 会作用于向量的每个元素:
codes <- c("a-1", "b-22", "c-3")
print(gsub("-", "", codes, fixed = TRUE))
print(sub("-[0-9]+", "", codes))输出:
[1] "a1" "b22" "c3"
[1] "a" "b" "c"挑战
简单完成 slugify(title)。返回小写形式的标题,去掉开头和结尾的空格,并将每段连续的空格替换为单个 -: Hello World 会变成 hello-world。
提供的代码会读取标题并打印返回值。
亲手试试
slugify <- function(title) {
# 在这里编写你的代码
title
}
# 已提供的输入和输出代码:保持原样
input <- suppressWarnings(readLines(file("stdin")))
cat(slugify(input[1]), sep = "\n")
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: R 在线编译器