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

发布于 2025-01-05 23:48:40 字数 174 浏览 0 评论 0原文

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

例如:

"my string is sad"

应该返回

"my"

我一直在尝试找出如何使用 sub/gsub 来执行此操作,但到目前为止尚未成功。

I would like to remove everything after a space in a string.

For example:

"my string is sad"

should return

"my"

I've been trying to figure out how to do this using sub/gsub but have been unsuccessful so far.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

温柔少女心 2025-01-12 23:48:40

您可以使用正则表达式,例如

sub(" .*", "", x)

请参阅正则表达式演示

在这里,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

请参阅在线 R 演示

You may use a regex like

sub(" .*", "", x)

See the regex demo.

Here, sub will only perform a single search and replace operation, the .* pattern will find the first space (since the regex engine is searching strings from left to right) and .* matches any zero or more characters (in TRE regex flavor, even including line break chars, beware when using perl=TRUE, then it is not the case) as many as possible, up to the string end.

Some variations:

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

See the online R demo.

绅刃 2025-01-12 23:48:40
strsplit("my string is sad"," ")[[1]][1]
strsplit("my string is sad"," ")[[1]][1]
臻嫒无言 2025-01-12 23:48:40

或者,将第一个空格后面的所有内容替换为空:

gsub(' [A-z ]*', '' , 'my string is sad')

并且用数字:

gsub('([0-9]+) .*', '\\1', c('c123123123 0320.1'))

or, substitute everything behind the first space to nothing:

gsub(' [A-z ]*', '' , 'my string is sad')

And with numbers:

gsub('([0-9]+) .*', '\\1', c('c123123123 0320.1'))
伤感在游骋 2025-01-12 23:48:40

Stringr 是你的朋友。

library(stringr)
word("my string is sad", 1)

Stringr is your friend.

library(stringr)
word("my string is sad", 1)
像极了他 2025-01-12 23:48:40

如果你想用正则表达式来做到这一点:

gsub('([A-z]+) .*', '\\1', 'my string is sad')

If you want to do it with a regex:

gsub('([A-z]+) .*', '\\1', 'my string is sad')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文