Search code examples
rstringstrsplit

Split a string by any number of spaces


I have the following string:

[1] "10012      ----      ----      ----      ----       CAB    UNCH                    CAB"

I want to split this string by the gaps, but the gaps have a variable number of spaces. Is there a way to use strsplit() function to split this string and return a vector of 8 elements that has removed all of the gaps?

One line of code is preferred.


Solution

  • Just use strsplit with \\s+ to split on:

    x <- "10012      ----      ----      ----      ----       CAB    UNCH       CAB"
    x
    # [1] "10012      ----      ----      ----      ----       CAB    UNCH       CAB"
    strsplit(x, "\\s+")[[1]]
    # [1] "10012" "----"  "----"  "----"  "----"  "CAB"   "UNCH"  "CAB"  
    length(.Last.value)
    # [1] 8
    

    Or, in this case, scan also works:

    scan(text = x, what = "")
    # Read 8 items
    # [1] "10012" "----"  "----"  "----"  "----"  "CAB"   "UNCH"  "CAB"