11 | Cadenas de caracteres y texto |
Wolfram Language tambi
én permite efectuar procesos de c
ómputo con texto. El texto se introduce como una
cadena de caracteres, demarcada por comillas (
").
Introducir una cadena de caracteres:
Al igual que cuando se ingresa un n
úmero, al introducir una cadena tal cual, no se genera ning
ún cambio, salvo que las comillas no son visibles cuando se muestra el resultado. Hay muchas funciones que trabajan con cadenas, como
StringLength, que produce la longitud de una cadena.
StringReverse invierte el orden de los caracteres que componen una cadena:
ToUpperCase pone en may
úsculas todos los caracteres de una cadena:
StringTake toma un n
úmero dado de los caracteres de una cadena, a partir del primero:
Si se toman 10 caracteres se obtiene una cadena de longitud 10:
StringJoin junta cadenas (no hay que olvidar los espacios si se desea separar palabras):
Se pueden formar listas de cadenas y luego aplicarle alguna función al resultado.
Una lista de cadenas:
Obtenga los dos primeros caracteres de cada cadena:
Es
útil poder convertir cadenas en listas de los caracteres que las forman. Cada uno de los caracteres resultantes es, en s
í mismo, una cadena de longitud 1.
Characters descompone una cadena en una lista de sus caracteres:
Una vez que se ha descompuesto una cadena en una lista de caracteres, pueden usarse con ella todas las operaciones usuales de listas.
Ordene los caracteres de una cadena:
Los elementos invisibles al principio de la lista son espaciadores. En caso de que se desee ver las cadenas en la forma como se habr
ían digitado, incluyendo
"...", hay que usar
InputForm.
InputForm muestra las cadenas en la forma como se digitar
ían, incluyendo las comillas:
Las funciones como
StringJoin y
Characters operan sobre cadenas de todo tipo, sin importar que tengan alg
ún significado. Otras funciones, tales como
TextWords, trabajan espec
íficamente con texto que tenga alg
ún sentido, es decir, que est
é escrito en ingl
és, por ejemplo.
TextWords produce la lista de las palabras en una cadena de texto dado:
Lo siguiente dará la longitud de cada palabra:
TextSentences descompone una cadena de texto en una lista de frases:
Existen muchas formas de obtener texto en Wolfram Language. Por ejemplo, la funci
ón
WikipediaData obtiene el texto actual de alg
ún art
ículo de Wikipedia.
Obtenga los 100 primeros caracteres del artículo de Wikipedia sobre computadoras o computers en inglés:
Una buena forma de hacerse una idea de lo que contiene un texto es formando una nube de palabras. Esto se logra con la funci
ón
WordCloud.
Cree una nube de palabras con el artículo de Wikipedia sobre computadoras o “computers” en inglés:
Como ser
ía de esperar,
computer y
computers son las palabras m
ás comunes en ese art
ículo.
Wolfram Language contiene mucha informaci
ón intr
ínseca sobre palabras del ingl
és y de otras lenguas.
WordList obtiene listas de palabras.
Obtenga las 20 primeras palabras de una lista de palabras comunes del inglés:
Cree una nube de palabras a partir de las letras iniciales de todas las palabras:
Las cadenas no necesariamente tienen que contener texto. En una yuxtaposici
ón de un sistema antiguo con moderno se puede generar, por ejemplo, los n
úmeros romanos como cadenas.
Genere la cadena del número romano para 1988
Cree una tabla de los números romanos para los enteros del 1 al 20:
Como para todo lo demás, pueden hacerse cálculos con estas cadenas. Por ejemplo, pueden graficarse las longitudes de los números romanos consecutivos.
Presente gr
áficamente las longitudes de los s
ímbolos para los n
úmeros romanos de los enteros del 1 al 100:
IntegerName da el nombre en ingl
és de un entero.
Genere una cadena con el nombre en inglés del entero 56:
A continuaci
ón se tiene una presentaci
ón gr
áfica de las longitudes de los nombres de los n
úmeros en ingl
és:
Hay muchas formas de convertir letras en n
úmeros (y viceversa).
Alphabet produce el alfabeto del ingl
és:
LetterNumber dice en qu
é posici
ón del alfabeto ingl
és aparece una letra dada:
Alphabet tambi
én conoce alfabetos de otras lenguas, aparte del ingl
és:
Transliterate convierte (aproximadamente) a las letras equivalentes en ingl
és:
Con esto se translitera la palabra “wolfram” al alfabeto ruso:
Si se quiere, se puede convertir texto en im
ágenes, las cuales pueden manipularse mediante procesamiento de im
ágenes. La funci
ón
Rasterize produce un
raster, o
bitmap, de alguna cosa.
Genere la imagen de una porci
ón de texto:
Efect
úe procesamiento de im
ágenes con el resultado:
"cadena" | | una cadena de caracteres |
StringLength["string"] | | longitud de una cadena |
StringReverse["string"] | | invierte una cadena |
StringTake["string",4] | | toma caracteres a partir del principio de una cadena |
StringJoin["string","string"] | | junta cadenas |
StringJoin[{"string","string"}] | | junta una lista de cadenas |
ToUpperCase["string"] | | convierte caracteres a mayúsculas |
Characters["string"] | | convierte una cadena en una lista de caracteres |
TextWords["string"] | | lista de las palabras en una cadena |
TextSentences["string"] | | lista de las frases |
WikipediaData["tema"] | | artículo de Wikipedia sobre un tema |
WordCloud["text"] | | nube de palabras a partir de las frecuencias de palabras |
WordList[ ] | | lista de palabras comunes del inglés |
Alphabet[] | | lista de las letras del alfabeto inglés |
LetterNumber["c"] | | en qué posición del alfabeto inglés aparece una letra |
FromLetterNumber[n] | | la letra que aparece en una posición dada del alfabeto inglés |
Transliterate["text"] | | translitera texto de cualquier lengua al inglés |
Transliterate["text","alphabet"] | | translitera texto a otros alfabetos |
RomanNumeral[n] | | convierte un número en la cadena de su equivalente romano |
IntegerName[n] | | convierte un número a la cadena de su nombre en inglés |
InputForm["string"] | | muestra una cadena con comillas |
Rasterize["string"] | | hace una imagen en bitmap |
11.1Junte dos copias de la cadena
"Hello".
»
11.2Forme una sola cadena con el alfabeto ingl
és con los caracteres en may
úscula.
»
11.3Genere una cadena con el alfabeto ingl
és en orden inverso.
»
11.4Junte 100 copias de la cadena
"AGCT".
»
11.6Forme una columna con n
úmeros crecientes consecutivos de las letras de la cadena
"this is about strings".
»
11.7Haga un diagrama de barras con las longitudes de las palabras en
“A long time ago, in a galaxy far, far away
”.
»
11.8Encuentre la longitud de la cadena formada con los caracteres en el art
ículo de Wikipedia
“computer
”.
»
11.9Cuente cu
ántas palabras hay en el art
ículo de Wikipedia
“computer
”.
»
11.10Encuentre la primera frase en el art
ículo de Wikipedia
“strings
”.
»
11.11Forme una cadena con los caracteres iniciales en todas la frases que hay en el art
ículo de Wikipedia sobre computadoras.
»
11.12Encuentre la mayor longitud de palabra entre todas las palabras del ingl
és encontradas en
WordList[].
»
11.13Cuente el n
úmero de palabras en
WordList[ ] que comienzan con
“q
”.
»
11.14Presente la gr
áfica, con los puntos unidos, de las longitudes de las 1000 primeras palabras de
WordList[].
»
11.16Use
StringReverse para hacer la nube de palabras de las letras finales en cada palabra obtenida de
WordList[].
»
11.17Encuentre el n
úmero romano correspondiente al a
ño 1959.
»
11.18Encuentre la mayor longitud de cadena entre los n
úmeros romanos para los a
ños del 1 al 2020.
»
11.19Cree una nube de palabras con los caracteres iniciales de cada uno de los n
úmeros romanos del 1 al 100.
»
11.20Use
Length para encontrar la longitud del alfabeto ruso.
»
11.21Genere las may
úsculas del alfabeto griego.
»
11.22Cree un diagrama de barras de los n
úmeros de letra en la palabra
“wolfram
”.
»
11.24Produzca una lista de 100 cadenas de 5 letras al azar.
»
11.25Translitere
“wolfram
” al alfabeto griego.
»
11.26Obtenga el alfabeto
árabe y transliterarlo al ingl
és.
»
11.27Ponga la letra
“A
” en blanco sobre negro, en tama
ño de fuente 200.
»
11.28Use
Manipulate para hacer un selector interactivo de caracteres en tama
ño 100 del alfabeto, controlado por un deslizador.
»
11.29Use
Manipulate para hacer un selector interactivo de bosquejos de caracteres alfab
éticos rasterizados, de tama
ño 100, controlado por un men
ú.
»
11.30Use
Manipulate para crear un
“simulador de visi
ón
” que haga borrosa una letra
”A
” de tama
ño 200, donde el nivel de difuminaci
ón var
íe entre 0 y 50.
»
+11.1Genere una cadena con el alfabeto ingl
és seguido del alfabeto en orden inverso.
»
+11.2Produzca una columna de una cadena con el alfabeto ingl
és y el alfabeto en orden inverso.
»
+11.3Cuente cu
ántas frases hay en el art
ículo de Wikipedia
“computer
”.
»
+11.4Junte, sin espacios, etc., las palabras de la primera frase en el art
ículo de Wikipedia
“strings
”.
»
+11.5Encuentre la longitud de la palabra m
ás larga en el art
ículo de Wikipedia
“computer
”.
»
+11.6Presente gr
áficamente las longitudes de los n
úmeros romanos para los n
úmeros del 1 al 2000.
»
+11.7Genere una cadena uniendo los n
úmeros romanos de los n
úmeros del 1 al 100.
»
+11.8Cree una gr
áfica unida con los n
úmeros de letra sucesivos para la concatenaci
ón de todos los n
úmeros romanos del 1 al 30.
»
+11.9Encuentre la m
áxima longitud de cadena de los nombres de los enteros del 1 al 1000.
»
+11.10Haga una lista de may
úsculas de tama
ño 20 con las letras del alfabeto, coloreadas aleatoriamente.
»
+11.11Haga una lista de 100 cadenas de 5 letras al azar tomadas del alfabeto ruso.
»
+11.12Cree un
Manipulate para mostrar los bordes de la letra A en tama
ño 200, con niveles de difuminaci
ón del 0 al 50.
»
+11.13Sume las letras A y B en blanco sobre negro, en tama
ño 200.
»
¿Qué diferencia hay entre "x" y x?
"x" es una cadena;
x es un s
ímbolo de Wolfram Language, tal como
Plus o
Max, que puede definirse para llevar a cabo operaciones de c
ómputo. M
ás adelante se tocar
á este tema con toda amplitud.
¿Cómo se ingresan caracteres que no aparezcan en el teclado?
¿C
ómo se ponen las comillas (
") dentro de una cadena?
Se usa \" (y si acaso se quiere poner literalmente \" en la cadena, póngase así: \\ \"). (Habrá que usar muchas diagonales invertidas si se quiere escribir \\ \": \\ \\ \\ \".)
¿Cómo se determinan los colores en las nubes de palabras?
Por defecto, se hace aleatoriamente con una determinada paleta de color. Puede también fijarlo el usuario, si así lo desea.
¿A qué se debe que la nube de palabras muestre “s” como la letra más común?
Porque es la letra inicial más frecuente en las palabras comunes del inglés. Pero si se busca entre todas las letras, la más frecuente es la “e”.
¿Qu
é pasa con aquellas letras que no pertenecen al ingl
és?
¿C
ómo se numeran?
LetterNumber["α", "Greek"] da la numeraci
ón en el alfabeto griego. Todos los caracteres tienen asignado un c
ódigo de car
ácter, que se puede obtener usando
ToCharacterCode.
¿Qu
é alfabetos conoce Wolfram Language?
En principio, todos los que están en uso en la actualidad. Puede probarse con “Greek” o “Arabic”, o con el nombre de alguna otra lengua. Tómese en cuenta que cuando se usan caracteres acentuados en una lengua, a veces es complicado decidir si algo pertenece al alfabeto o si es simplemente un derivado.
¿Se pueden traducir palabras en vez de simplemente transliterar sus letras?
¿Se puede obtener listas de palabras comunes en lenguas diferentes del ingl
és?
- RandomWord[10] responde con 10 palabras al azar. ¿Cuántas de ellas conoce el lector?
- StringTake["string", -2] toma 2 caracteres contando desde el final de la cadena.
- Cualquier carácter, ya sea “a”, “α” o “狼”, está representado por un código para carácter, que se encuentra con ToCharacterCode. Puede explorarse el “espacio Unicode” con FromCharacterCode.
- Si se obtiene un resultado diferente del esperado al usar WikipediaData, se debe a que Wikipedia ha sufrido alguna modificación.
- WordCloud elimina automáticamente palabras “no interesantes” del texto, tales como “el”, “y”, etc.
- Si no se puede dar con el nombre de algún alfabeto o lenguaje, use (como se describe en la Sección 16) para digitarlo en lenguaje natural.