Merge Multiple spaces to single space; remove trailing/leading spaces
我想将多个空格合并为单个空格(空格也可以是制表符)并删除尾随空格/前导空格。
例如。。。
1 | string <-"Hi buddy what's up Bro" |
到
1 | "Hi buddy what's up bro" |
我检查了regex给出的解决方案,用一个空格替换多个空格。请注意,不要在玩具串中放置 或那样精确的空间,并将其作为
请注意,我不能在玩具串中放置多个空间。谢谢
这似乎能满足你的需要。
1 2 3 4 | 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" |
使用单个regex的另一种方法:
1 | gsub("(?<=[\\s])\\s*|^\\s+|\\s+$","", string, perl=TRUE) |
解释(自)
4或者简单地从
1 2 3 4 | > library(stringr) > string <-" Hi buddy what's up Bro" > str_squish(string) [1]"Hi buddy what's up Bro" |
执行此任务不需要导入外部库:
1 2 3 4 5 | 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)) |
干净多了。
1 2 3 4 | library(qdapRegex) rm_white(string) ## [1]"Hi buddy what's up Bro" |
你也可以试试
1 2 3 4 | library(qdap) library(stringr) str_trim(clean(string)) #[1]"Hi buddy what's up Bro" |
或者按照@tyler rinker的建议(仅使用
1 2 | Trim(clean(string)) #[1]"Hi buddy what's up Bro" |
使用strsplit的另一个解决方案:
将文本拆分为单词,然后使用粘贴函数连接单个单词。
1 2 3 | string <-"Hi buddy what's up Bro" stringsplit <- sapply(strsplit(string,""), function(x){x[!x ==""]}) paste(stringsplit ,collapse ="") |
对于多个文档:
1 2 3 | 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包的
1 2 | `string =" Hi buddy what's up Bro" trimws(gsub("\\s+","", string))` |
这里,
要知道任何正则表达式都在做什么,请访问@tyler rinker提到的链接。只需复制并粘贴您想要知道它在做什么的正则表达式,其余的就可以了。