删除字符串中空格后的所有内容
Posted
技术标签:
【中文标题】删除字符串中空格后的所有内容【英文标题】:Remove everything after space in string 【发布时间】:2012-03-08 07:42:22 【问题描述】:我想。
例如:
"my string is sad"
应该返回
"my"
我一直试图弄清楚如何使用 sub/gsub 来做到这一点,但到目前为止还没有成功。
【问题讨论】:
【参考方案1】:你可以使用像这样的正则表达式
sub(" .*", "", x)
请参阅regex demo。
这里,sub
只会执行一次搜索和替换操作, .*
模式会找到第一个空格(因为正则表达式引擎是从左到右搜索字符串),.*
匹配任何零个或多个字符(在 TRE 正则表达式中,甚至包括换行符,使用 perl=TRUE
时要小心,那么情况并非如此)尽可能多,直到字符串结尾。
一些变化:
sub("[[:space:]].*", "", x) # \s or [[:space:]] will match more whitespace chars
sub("(*UCP)(?s)\\s.*", "", x, perl=TRUE) # PCRE Unicode-aware regex
stringr::str_replace(x, "(?s) .*", "") # (?s) will force . to match any chars
请参阅online R demo。
【讨论】:
【参考方案2】:strsplit("my string is sad"," ")[[1]][1]
【讨论】:
应用于数据框列的矢量化版本会更酷【参考方案3】:或者,将第一个空格后面的所有内容都替换为空:
gsub(' [A-z ]*', '' , 'my string is sad')
还有数字:
gsub('([0-9]+) .*', '\\1', c('c123123123 0320.1'))
【讨论】:
注意,上面的例子不能去掉句号!【参考方案4】:如果您想使用正则表达式:
gsub('([A-z]+) .*', '\\1', 'my string is sad')
【讨论】:
【参考方案5】:Stringr 是你的朋友。
library(stringr)
word("my string is sad", 1)
【讨论】:
以上是关于删除字符串中空格后的所有内容的主要内容,如果未能解决你的问题,请参考以下文章