Определите, заканчивается ли строка в пробеле, и добавьте пробел, если нет - программирование

Определите, заканчивается ли строка в пробеле, и добавьте пробел, если нет

Я хочу проверить, заканчивается ли строка пробелом. Если это не так, я хотел бы добавить символ конца пробела в конец строки.

На самом деле, я проверяю, заканчивается ли строка пробелом с grepl, а затем я paste пробелом в конце.

append_space <- function(x) {
  if(!grepl("(\\s)$", x))
    x <- paste0(x, " ")
  return(x)
}

Однако, я думаю, что могу сделать это непосредственно с помощью функции sub с отрицательным просмотром с помощью !, но я не знаю, как его использовать.

Кто-нибудь знает, как я могу это сделать с помощью sub?

4b9b3361

Ответ 1

Вы можете использовать sub с группой захвата и обратной ссылкой в ​​заменяемой части:

sub("(\\S)$", "\\1 ", x)

\S означает non-whitespace.

Смотрите демо

Ответ 2

Вы также можете попробовать

 sub(' ?$', ' ', x)
 #[1] "blabla1 " "blabla2 "

где

 x <- c("blabla1 ", "blabla2")

Ответ 3

Я думаю, что этот подход будет работать:

x <- c("blabla1 ","blabla2")

sub("(?<=([^ ])$)$", " ", x, perl=TRUE)
## [1] "blabla1 " "blabla2 "

Ответ 4

Как я уже сказал в своем комментарии, вы можете попробовать:

sub("(.*[^ ])$","\\1 ", x)

Пример

x <- c("blabla1 ","blabla2")
sub("(.[^ ])$","\\1 ", x)
#[1] "blabla1 " "blabla2 "