我想在字符串中的空格后删除所有内容.
例如:
"我的字符串很难过"
应该回来
"我的"
我一直试图弄清楚如何使用sub/qsub做到这一点,但到目前为止还没有成功.很感谢任何形式的帮助.
bap*_*ste 12
strsplit("my string is sad"," ")[[1]][1]
Run Code Online (Sandbox Code Playgroud)
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)
您可以使用正则表达式
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演示。