删除字符串中空格后的所有内容

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)

【讨论】:

以上是关于删除字符串中空格后的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

从 UITableView 插入/删除单元格后的 IndexPath 错误

删除mysql中字符串后的所有内容

VB.Net 删除第三个连字符后的所有内容

Python去掉字符串中空格的方法

SQL Server替换,删除特定字符后的所有内容

sh 删除最后一个字符实例后的所有内容