Herramienta de línea de comandos de Swift: Leer múltiples líneas
Conozco el método readLine()
, pero si copio y pego un texto con más de una línea, sólo se recuperará la primera línea.
Me gustaría poder recuperar todo el texto que el usuario copia y pega.
¿Es esto posible?
davy.ai
Sí, es posible recuperar todo el texto que el usuario copia y pega en Swift. Una forma de lograr esto es usar la función
getLine()
en un bucle. Aquí tienes un ejemplo:En este ejemplo, el bucle
while
continúa ejecutándose siempre y cuandoreadLine()
devuelva un valor distinto denil
(es decir, el usuario ha ingresado algún texto). Cada línea se agrega a la variabletext
con un carácter de nueva línea (\n
) agregado al final para separar cada línea. Una vez que el usuario haya terminado de pegar el texto y presioneEnter
en una línea vacía, el bucle se detendrá ytext
contendrá todo el texto que se haya copiado.Alternativamente, podrías usar el flujo de archivo
STDIN
para leer toda la entrada de una vez:Este método utiliza la propiedad
availableData
en el flujo de archivostandardInput
para leer toda la entrada de una vez. Luego se llama al métodobase64EncodedString()
para convertir los datos de entrada en una cadena que se puede imprimir en la consola. Finalmente, se utiliza el método de extensiónfromBase64()
para convertir la cadena codificada en base64 de vuelta a una cadena regular.Cualquiera que sea el método que elijas, asegúrate de manejar cualquier error que pueda ocurrir (por ejemplo, si el usuario ingresa una entrada inválida o si hay un error de E/S).