複数のスペースを単一のスペースにマージし(スペースもタブにすることができます)、末尾/先頭のスペースを削除します。
例えば...
string <- "Hi buddy what's up Bro"
に
"Hi buddy what's up bro"
複数のスペースを単一のスペースに置き換える正規表現 で指定されたソリューションを確認しました。おもちゃの文字列内に正確なスペースとして\ tまたは\ nを入れて、gsub
のパターンとしてフィードしないでください。 Rでそれが欲しい.
おもちゃの文字列に複数のスペースを入れることができないことに注意してください。ありがとう
これはあなたのニーズを満たすようです。
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"
単一の正規表現を使用する別のアプローチ:
gsub("(?<=[\\s])\\s*|^\\s+|\\s+$", "", string, Perl=TRUE)
説明( from )
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
または、単にsquish
からstringr
関数を試してください
> library(stringr)
> string <- " Hi buddy what's up Bro "
> str_squish(string)
[1] "Hi buddy what's up Bro"
このようなタスクを実行するために外部ライブラリをインポートする必要はありません。
string <- " Hi buddy what's up Bro "
string <- gsub("\\s+", " ", string)
string <- trimws(string)
string
[1] "Hi buddy what's up Bro"
または、1行で:
string <- trimws(gsub("\\s+", " ", string))
ずっときれい。
qdapRegex
にはrm_white
これを処理する関数:
library(qdapRegex)
rm_white(string)
## [1] "Hi buddy what's up Bro"
clean
からqdap
を試すこともできます
library(qdap)
library(stringr)
str_trim(clean(string))
#[1] "Hi buddy what's up Bro"
または@Tyler Rinkerが示唆するように(qdap
のみを使用)
Trim(clean(string))
#[1] "Hi buddy what's up Bro"
Strsplitを使用する別のソリューション:
テキストを単語に分割し、貼り付け機能を使用して単一の単語を連結します。
string <- "Hi buddy what's up Bro"
stringsplit <- sapply(strsplit(string, " "), function(x){x[!x ==""]})
paste(stringsplit ,collapse = " ")
複数のドキュメントの場合:
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 = " "))
この目的のために、Base rパッケージのgsub()
が機能するため、追加のライブラリをロードする必要はありません。
追加のライブラリを覚えておく必要はありません。 @Adam Ericksonが述べたように、先頭の空白と末尾の空白をtrimws()
で削除し、gsub()
を使用して余分な空白を置き換えます。
`string = " Hi buddy what's up Bro "
trimws(gsub("\\s+", " ", string))`
ここに \\s+
は1つ以上の空白に一致し、gsub
は単一の空白に置き換えます。
正規表現が何をしているのかを知るには、@-Tyler Rinkerが述べたように link にアクセスしてください。
何をしているかを知りたい正規表現をコピーして貼り付けるだけで、あとは this で処理されます。