Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove all whitespace from a string?

So " xx yy 11 22 33 " will become "xxyy112233". How can I achieve this?

like image 911
waanders Avatar asked May 13 '11 12:05

waanders


People also ask

How do I remove all white spaces from a string in C++?

Remove spaces from std::string in C++ To remove this we will use the remove() function. With this remove() function it takes the beginning and end of the iterator, then takes the third argument that will be deleted from that iterator object.

How do you remove all the spaces from a string in JS?

Using Split() with Join() method To remove all whitespace characters from the string, use \s instead. That's all about removing all whitespace from a string in JavaScript.

How can remove space from string in C#?

Strip whitespace from the start and end of a C# string An easy way to do that is by calling C#'s Trim() method on the string: string example = " Hi there! "; string trimmed = example. Trim(); // Result: "Hi there!"

How do you remove spaces from a string in Python?

The strip() method is the most commonly accepted method to remove whitespaces in Python. It is a Python built-in function that trims a string by removing all leading and trailing whitespaces.


2 Answers

In general, we want a solution that is vectorised, so here's a better test example:

whitespace <- " \t\n\r\v\f" # space, tab, newline,                              # carriage return, vertical tab, form feed x <- c(   " x y ",           # spaces before, after and in between   " \u2190 \u2192 ", # contains unicode chars   paste0(            # varied whitespace          whitespace,      "x",      whitespace,      "y",      whitespace,      collapse = ""   ),      NA                 # missing ) ## [1] " x y "                            ## [2] " ← → "                            ## [3] " \t\n\r\v\fx \t\n\r\v\fy \t\n\r\v\f" ## [4] NA 

The base R approach: gsub

gsub replaces all instances of a string (fixed = TRUE) or regular expression (fixed = FALSE, the default) with another string. To remove all spaces, use:

gsub(" ", "", x, fixed = TRUE) ## [1] "xy"                            "←→"              ## [3] "\t\n\r\v\fx\t\n\r\v\fy\t\n\r\v\f" NA  

As DWin noted, in this case fixed = TRUE isn't necessary but provides slightly better performance since matching a fixed string is faster than matching a regular expression.

If you want to remove all types of whitespace, use:

gsub("[[:space:]]", "", x) # note the double square brackets ## [1] "xy" "←→" "xy" NA   gsub("\\s", "", x)         # same; note the double backslash  library(regex) gsub(space(), "", x)       # same 

"[:space:]" is an R-specific regular expression group matching all space characters. \s is a language-independent regular-expression that does the same thing.


The stringr approach: str_replace_all and str_trim

stringr provides more human-readable wrappers around the base R functions (though as of Dec 2014, the development version has a branch built on top of stringi, mentioned below). The equivalents of the above commands, using [str_replace_all][3], are:

library(stringr) str_replace_all(x, fixed(" "), "") str_replace_all(x, space(), "") 

stringr also has a str_trim function which removes only leading and trailing whitespace.

str_trim(x)  ## [1] "x y"          "← →"          "x \t\n\r\v\fy" NA     str_trim(x, "left")     ## [1] "x y "                   "← → "     ## [3] "x \t\n\r\v\fy \t\n\r\v\f" NA      str_trim(x, "right")     ## [1] " x y"                   " ← →"     ## [3] " \t\n\r\v\fx \t\n\r\v\fy" NA       

The stringi approach: stri_replace_all_charclass and stri_trim

stringi is built upon the platform-independent ICU library, and has an extensive set of string manipulation functions. The equivalents of the above are:

library(stringi) stri_replace_all_fixed(x, " ", "") stri_replace_all_charclass(x, "\\p{WHITE_SPACE}", "") 

Here "\\p{WHITE_SPACE}" is an alternate syntax for the set of Unicode code points considered to be whitespace, equivalent to "[[:space:]]", "\\s" and space(). For more complex regular expression replacements, there is also stri_replace_all_regex.

stringi also has trim functions.

stri_trim(x) stri_trim_both(x)    # same stri_trim(x, "left") stri_trim_left(x)    # same stri_trim(x, "right")   stri_trim_right(x)   # same 
like image 120
Aniko Avatar answered Sep 17 '22 15:09

Aniko


I just learned about the "stringr" package to remove white space from the beginning and end of a string with str_trim( , side="both") but it also has a replacement function so that:

a <- " xx yy 11 22 33 "  str_replace_all(string=a, pattern=" ", repl="")  [1] "xxyy112233" 
like image 35
JollyRoger Avatar answered Sep 18 '22 15:09

JollyRoger