Je souhaite fusionner plusieurs espaces en un seul espace (l'espace pourrait également être une tabulation) et supprimer les espaces de fin/suivants.
Par exemple...
string <- "Hi buddy what's up Bro"
à
"Hi buddy what's up bro"
J'ai vérifié la solution donnée à Regex pour remplacer plusieurs espaces par un seul espace . Notez que ne mettez pas\t ou\n comme espace exact à l'intérieur de la chaîne de jouets et ne l'alimentez pas comme motif dans gsub
. Je veux que dans R.
Notez que je suis incapable de mettre plusieurs espaces dans la chaîne de jouets . Merci
Cela semble répondre à vos besoins.
string <- " Hi buddy what's up Bro "
library(stringr)
str_replace(gsub("\\s+", " ", str_trim(string)), "B", "b")
# [1] "Hi buddy what's up bro"
Une autre approche utilisant une seule expression régulière:
gsub("(?<=[\\s])\\s*|^\\s+|\\s+$", "", string, Perl=TRUE)
Explication ( de )
NODE EXPLANATION
--------------------------------------------------------------------------------
(?<= look behind to see if there is:
--------------------------------------------------------------------------------
[\s] any character of: whitespace (\n, \r,
\t, \f, and " ")
--------------------------------------------------------------------------------
) end of look-behind
--------------------------------------------------------------------------------
\s* whitespace (\n, \r, \t, \f, and " ") (0 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
\s+ whitespace (\n, \r, \t, \f, and " ") (1 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
$ before an optional \n, and the end of the
string
Ou essayez simplement la fonction squish
de stringr
> library(stringr)
> string <- " Hi buddy what's up Bro "
> str_squish(string)
[1] "Hi buddy what's up Bro"
La qdapRegex
a la fonction rm_white
pour gérer ceci:
library(qdapRegex)
rm_white(string)
## [1] "Hi buddy what's up Bro"
Il n'est pas nécessaire d'importer des bibliothèques externes pour effectuer une telle tâche:
string <- " Hi buddy what's up Bro "
string <- gsub("\\s+", " ", string)
string <- trimws(string)
string
[1] "Hi buddy what's up Bro"
Ou, en une ligne:
string <- trimws(gsub("\\s+", " ", string))
Beaucoup plus propre.
Vous pouvez également essayer clean
à partir de qdap
library(qdap)
library(stringr)
str_trim(clean(string))
#[1] "Hi buddy what's up Bro"
Ou comme suggéré par @Tyler Rinker (en utilisant seulement qdap
)
Trim(clean(string))
#[1] "Hi buddy what's up Bro"
Une autre solution utilisant strsplit:
Fractionner du texte en mots, puis concaténer des mots simples à l’aide de la fonction Coller.
string <- "Hi buddy what's up Bro"
stringsplit <- sapply(strsplit(string, " "), function(x){x[!x ==""]})
paste(stringsplit ,collapse = " ")
Pour plus d'un document:
string <- c("Hi buddy what's up Bro"," an example using strsplit ")
stringsplit <- lapply(strsplit(string, " "), function(x){x[!x ==""]})
sapply(stringsplit ,function(d) paste(d,collapse = " "))
À cette fin, il n'est pas nécessaire de charger des bibliothèques supplémentaires car le gsub()
du package Base r fait le travail.
Pas besoin de se souvenir de ces bibliothèques supplémentaires. Supprimez les espaces blancs de début et de fin avec trimws()
et remplacez les espaces blancs supplémentaires à l'aide de gsub()
comme indiqué par @Ad Erickson.
`string = " Hi buddy what's up Bro "
trimws(gsub("\\s+", " ", string))`
Ici, \\s+
correspond à un ou plusieurs espaces et gsub
le remplace par un seul espace.
Pour savoir ce que fait une expression régulière, visitez le link mentionné par @Tyler Rinker.
Il vous suffit de copier et coller l’expression rationnelle pour savoir ce qu’elle fait et this fera le reste.