Dear Dennis, On 2020-07-28 13:20 -0700, Dennis Fisher wrote: | Colleagues | | I have strings that contain a space in | an unexpected location. The intended | string is: | “STRING 01. Remainder of the string" | However, variants are: | “STR ING 01. Remainder of the string" | “STRIN G 01. Remainder of the string" | | I would like a general approach to | deleting a space, but only if it | appears before the period. Any | suggestions on a regular expression | for this?
Perhaps by using gregexpr to look for dots, remove spaces from the substring until the first finding, then pasting it back. strings <- c("STRING 01. Remainder of the string.", "STR ING 01. Remainder of the string.", "STRIN G 01. Remainder of the string.") search <- gregexpr("\\.", strings) lens <- nchar(strings) FUN <- function(i, strings, search, lens) { before.dot <- substr(strings[i], 1, search[[i]][1]) before.dot <- gsub(" ", "", before.dot) after.dot <- substr(strings[i], search[[i]][1]+1, lens[i]) return(paste0(before.dot, after.dot)) } simplify2array(parallel::mclapply( X=1:length(strings), FUN=FUN, strings=strings, search=search, lens=lens)) yields [1] "STRING01. Remainder of the string." [2] "STRING01. Remainder of the string." [3] "STRING01. Remainder of the string." Yes, I know, the space just before 01 also disappears ... Best, Rasmus ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.