Eliminar todo después del espacio en la cadena
Pregunta
Me gustaría eliminar todo después de un espacio en una cadena.
Por ejemplo:
"my string is sad"
debería regresar
"my"
He estado tratando de descubrir cómo hacer esto usando Sub/GSub, pero hasta ahora no he tenido éxito.
Solución
strsplit("my string is sad"," ")[[1]][1]
Otros consejos
O sustituya todo detrás del primer espacio a la nada:
gsub(' [A-z ]*', '' , 'my string is sad')
Y con números:
gsub('([0-9]+) .*', '\\1', c('c123123123 0320.1'))
Puedes usar una regex como
sub(" .*", "", x)
Ver el demostración de regex.
Aquí, sub
solo realizará una sola operación de búsqueda y reemplazo, el .*
El patrón encontrará el primer espacio (ya que el motor regex está buscando cadenas de izquierda a derecha) y .*
coincide con cero o más caracteres (en el sabor de tre regex, incluso incluyendo caracteres de ruptura de línea, tenga cuidado al usar perl=TRUE
, entonces no es el caso) tantos como sea posible, hasta el extremo de la cadena.
Algunas variaciones:
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
Ver el demo en línea r.
Si quieres hacerlo con una regex:
gsub('([A-z]+) .*', '\\1', 'my string is sad')