【发布时间】:2018-04-13 06:07:03
【问题描述】:
我想要一个函数,它接受一个字符串(不是一个向量)并反转该字符串中的单词。
例如,
rev_sentence("hi i'm five")
## [1] "five i'm hi"
我有一个函数可以反转单个字符,但不能反转本质上是一个句子的字符串。
【问题讨论】:
我想要一个函数,它接受一个字符串(不是一个向量)并反转该字符串中的单词。
例如,
rev_sentence("hi i'm five")
## [1] "five i'm hi"
我有一个函数可以反转单个字符,但不能反转本质上是一个句子的字符串。
【问题讨论】:
在R中,我们可以使用strsplit在一个或多个空格处进行拆分,然后将元素和paste一起反转
sapply(strsplit(str1, "\\s+"), function(x) paste(rev(x), collapse=" "))
#[1] "five i'm hi"
如果只有一个字符串,那么
paste(rev(strsplit(str1, "\\s+")[[1]]), collapse= " ")
#[1] "five i'm hi"
在Python 中,选项将是split 和join 在反转后([::-1])
" ".join("hi i'm five".split()[::-1])
#"five i'm hi"
或使用reversed
" ".join(reversed("hi i'm five".split()))
#"five i'm hi"
str1 <- "hi i'm five"
【讨论】:
strsplit 返回单个向量的list,即长度为 1。在第一种情况下,我们假设如果有很多字符串,那么它将是一个 list vector 即。长度大于 1。这就是使用 sapply 循环遍历 list 并得到相反的原因。在第二种情况下,list 通过提取第一个元素即[[1]] 转换为vector,然后将rev 直接应用于vector