¿Cómo puedo poner en mayúscula la primera letra de cada palabra en una cadena en Perl?

StackOverflow https://stackoverflow.com/questions/77226

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Cuál es la forma más sencilla de poner en mayúscula la primera letra de cada palabra de una cadena?

¿Fue útil?

Solución

Ver las preguntas frecuentes.

No creo que ucfirst() satisfaga la pregunta del OP de poner en mayúscula la primera letra de cada palabra en una cadena sin dividir la cadena y unirla más tarde.

Otros consejos

Como @brian menciona en los comentarios, ¡la respuesta actualmente aceptada por @piCookie es incorrecta!

$_="what's the wrong answer?";
s/\b(\w)/\U$1/g
print; 

Esto imprimirá "¿Cuál es la respuesta incorrecta?" Observe la S oxida capitalizada S

como el Preguntas más frecuentes dice que probablemente sea mejor que uses

s/([\w']+)/\u\L$1/g

o Texto::Autoformato

Échale un vistazo al ucprimero función.

$line = join " ", map {ucfirst} split " ", $line;
$capitalized = join '', map { ucfirst lc $_ } split /(\s+)/, $line;

Al capturar el espacio en blanco, se inserta en la lista y se usa para reconstruir el espacio original."ucfirst lc" escribe "texto" en mayúscula en "Texto".

$string =~ s/(\w+)/\u$1/g;

debería funcionar bien

Esto pone en mayúscula sólo la primera palabra de cada línea:

perl -ne "print (ucfirst($1)$2)  if s/^(\w)(.*)/\1\2/" file

Tenga en cuenta que la solución de preguntas frecuentes no funciona si tiene palabras escritas en mayúsculas y desea que estén (solo) en mayúscula.Puede crear una expresión regular más complicada o simplemente hacer un lc en la cadena antes de aplicar la solución de preguntas frecuentes.

Puedes usar 'Titulo del caso', es un código genial escrito en Perl.

El ucprimero La función en un mapa ciertamente hace esto, pero solo de una manera muy rudimentaria.Si quieres algo un poco más sofisticado, echa un vistazo a Guión TitleCase de John Gruber.

prueba esto :

echo "what's the wrong answer?" |perl -pe 's/^/ /; s/\s(\w+)/ \u$1/g; s/^ //'

¿Cuál es la respuesta incorrecta?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top