Menu
CoddyTech

替换文本

本课属于 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"
challenge icon

挑战

简单

完成 slugify(title)。返回小写形式的标题,去掉开头和结尾的空格,并将每段连续的空格替换为单个 -: Hello World 会变成 hello-world。

提供的代码会读取标题并打印返回值。

亲手试试

slugify <- function(title) {
  # 在这里编写你的代码
  title
}

# 已提供的输入和输出代码:保持原样
input <- suppressWarnings(readLines(file("stdin")))
cat(slugify(input[1]), sep = "\n")
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: R 在线编译器