Jake
Jake

Reputation: 285

How to reverse a sentence?

I want a function that takes a string (NOT a vector) and reverses the words in that string.

For example,

rev_sentence("hi i'm five")
## [1] "five i'm hi"

I have a function that reverses individual characters, but not something that will reverse a string that's essentially a sentence.

Upvotes: 9

Views: 2860

Answers (2)

LMc
LMc

Reputation: 18612

Here is a similar answer, but using tidyverse functions:

x <- paste("hi i'm", c("five", "six", "seven"))

library(stringr)
purrr::map_chr(x, ~ str_flatten(rev(str_split_1(.x, "\\s")), " "))
# "five i'm hi"  "six i'm hi"   "seven i'm hi"

Upvotes: 0

akrun
akrun

Reputation: 886948

In R, We can use strsplit to split at one or more spaces and then reverse the elements and paste it together

sapply(strsplit(str1, "\\s+"), function(x) paste(rev(x), collapse=" "))
#[1] "five i'm hi"

If there is only a single string, then

paste(rev(strsplit(str1, "\\s+")[[1]]), collapse= " ")
#[1] "five i'm hi"

In Python, the option would be to split and join after reversing ([::-1])

" ".join("hi i'm five".split()[::-1])
#"five i'm hi"

Or use the reversed

" ".join(reversed("hi i'm five".split()))
#"five i'm hi"

data

str1 <- "hi i'm five"

Upvotes: 10

Related Questions