Remove everything after space in string

前端 未结 4 478
后悔当初
后悔当初 2020-11-30 12:20

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

For example:

\"my string is sad\"

should return

\"m         


        
相关标签:
4条回答
  • 2020-11-30 13:01

    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.

    0 讨论(0)
  • 2020-11-30 13:05

    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'))
    
    0 讨论(0)
  • 2020-11-30 13:09
    strsplit("my string is sad"," ")[[1]][1]
    
    0 讨论(0)
  • 2020-11-30 13:11

    If you want to do it with a regex:

    gsub('([A-z]+) .*', '\\1', 'my string is sad')
    
    0 讨论(0)
提交回复
热议问题