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

use*_*864 8 regex r gsub

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

例如:

"我的字符串很难过"

应该回来

"我的"

我一直试图弄清楚如何使用sub/qsub做到这一点,但到目前为止还没有成功.很感谢任何形式的帮助.

bap*_*ste 12

strsplit("my string is sad"," ")[[1]][1]
Run Code Online (Sandbox Code Playgroud)

  • 应用于数据框列的矢量化版本会更酷 (2认同)

See*_*tle 10

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

gsub(' [A-z ]*', '' , 'my string is sad')
Run Code Online (Sandbox Code Playgroud)

还有数字:

gsub('([0-9]+) .*', '\\1', c('c123123123 0320.1'))
Run Code Online (Sandbox Code Playgroud)


Wik*_*żew 8

您可以使用正则表达式

sub(" .*", "", x)
Run Code Online (Sandbox Code Playgroud)

参见regex演示

在这里,sub将仅执行单个搜索和替换操作,该 .*模式将找到第一个空格(因为正则表达式引擎正在从左到右搜索字符串),并且.*匹配任何零个或多个字符(采用TRE regex风格,甚至包括换行符) ,请小心使用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
Run Code Online (Sandbox Code Playgroud)

请参阅在线R演示


vla*_*iim 6

斯特林格是你的朋友。

library(stringr)
word("my string is sad", 1)
Run Code Online (Sandbox Code Playgroud)