- chr
- ord
- real
- string
- ansi_char
- string_byte_at
- string_byte_length
- string_set_byte_at
- string_char_at
- string_copy
- string_count
- string_delete
- string_digits
- string_format
- string_insert
- string_length
- string_letters
- string_lettersdigits
- string_lower
- string_pos
- string_repeat
- string_replace
- string_replace_all
- string_upper
- string_height
- string_height_ext
- string_width
- string_width_ext
Además de las funciones anteriores, que específicamente trabajan con cadenas, GM:S permite acceder al portapapeles de la plataforma Windows para obtener y ajustar texto:
chr(val);
Argumento | Descripción |
---|---|
val | El código unicode del caracter. |
Devuelve: String
Esta función devuelve una cadena conteniendo el caracter que corresponde al código Unicode introducido. Este caracter depende de la página de códigos del juego de caracteres de la fuente que se emplea para dibujar, pero si no se ha fijado ninguna fuente, se usará la página de códigos por defecto.
mystring = chr(53) + chr(48);
Esto ajustará mystring a "50" (como cadena, no como entero) ya que chr(53) es "5" y chr(48) es "0".
ord(str);
Argumento | Descripción |
---|---|
str | El caracter del cuál obtener el código Unicode. |
devuelve: Real
Esta función toma una cadena (de un único caracter) y devuelve el valor Unicode de ese caracter. De esta forma es posible almacenar pulsaciones de teclas individuales como enteros, y es comúnnmente usada por las funciones keyboard_check()
if keyboard_check(ord("W"))
{
y -= 4;
}
Esto moverá la instancia que ejecuta el código cuatro pixeles hacia arriba si se presiona la tecla W.
real( str );
Argumento | Descripción |
---|---|
str | La cadena a convertir en un valor real. |
Devuelve: Real
Esta función se usa para convertir una cadena en un número real. Cuando se usa esta función, los números, el signo menos, puntos decimales y partes exponenciales en la cadena son tomados en cuenta, mientras que otros caracteres (como las letras) producirán un error. Si se sabe o se sospecha que la cadena pudiera contener otros caracteres, antes de usar ésta función se puede usar la función string_digits() para remover todos los caracteres no numéricos.
var t_str;
t_str = cadena_digits(input_str);
age = real(t_str);
El código anterior tomara la cadena t_str, removerá todos los caracteres que no sean números, y la transformará en un número real que se almacena en la variable "age".
string(val);
Argumento | Descripción | |
---|---|---|
str |
|
Devuelve: Cadena
Esta función permite convertir cualquier número real en cadena. Si el número real es un entero, será guardado sin decimales, de lo contrario, será guardado con dos cifras decimales.
draw_text(100, 100, "Score: " + string(score) + " / Health: " + string(health));
El código anterior utiliza la función string para dibujar tanto números reales como cadenas juntos (draw acepta o una cadena o un real, pero no ambos).
ansi_char(val);
Argumentoo | Descripción |
---|---|
val | El valor del byte. |
Devuelve: Cadena (caracter sencillo)
Esta función devuelve una cadena consistente en el caracter equivalente al valor de byte especificado. El caracter devuelto no puede, ni debería, ser desplegado, pero sí se guardará de manera correcta en disco para su uso en codificación.
string_byte_at(str, index);
Argumento | Descripción |
---|---|
str | La cadena a revisar. |
index | La posición de la cual obtener el byte. |
Devuelve: Real
newbyte = string_byte_at("Hello World", 6);
Este código ajusta la variable newbyte al valor del sexto byte de la cadena "Hello World".
string_byte_length( str );
Argumentoo | Descripción |
---|---|
str | La cadena de la cual contabilizar el número de bytes. |
devuelve: Real
Esta función devuelve el número de bytes en la cadena, pero es preciso notar que debido a que se maneja codificación UTF8, este número no será igual a la longitud de la cadena.
bytesize = string_byte_length("Hello World");
Esto ajusta "bytesize" al número de bytes en la cadena "Hello World".
string_set_byte_at(str, pos, byte);
Argumento | Descripción |
---|---|
str | La cadena en la cual cambiar el byte. |
pos | La posición (comenzando en 1) donde cambiar el byte. |
byte | El nuevo valor del byte. |
Devuelve:Cadena
Esta función ajusta sirectamente un byte en la cadena (basado en el formato UTF8) y devuelve una copia de la cadena con los cambios.
NOTA: Esta función resulta increíblemente lenta, lo que exige considerar si es realmente necesaria y dónde usarla.
str = string_set_byte_at("hello", 2, 97);
El código anterior cambia el valor del byte de la segunda letra en la cadena, por lo que la variable "str" se reajusta para almacenar la cadena "hallo".
string_char_at(str, index);
Argumento | Descripción |
---|---|
str | La cadena a revisar. |
index | La posición de la cual obtener el caracter. |
Devuelve: Cadena
Esta función se usa para devolver un caracter en una posición específica dentro de una cadena, con el el índice comenzando en 1 para el primer caracter. Si no se encuentra un caracter o la cadena es más corta que el valor de índice especificado, la función devuelve una cadena vacía "" .
str1 = "Hello World";
str2 = string_char_at(str1, 7);
Esto ajusta str2 al séptimo caracter ("H" cuenta como el primero) en la cadena, en este caso, la letra "W".
string_copy(str, index, count);
Argumento | Descripción |
---|---|
str | La cadena de la cual hacer la copia. |
index | La posición del primer caracter en la cadena original (numerados a partir de 1) |
count | El número de caracteres a copiar, comenzando por la posición especificada por el argumento anterior |
Devuelve: cadena
Mediante esta función es posible seleccionar determinado número de caracteres dentro de una cadena para copiarse en otra. El primer caracter de una cadena siepre está numerado como "1", así que por ejemplo, para copiar los cinco primeros caracteres de una cadena, se usaría string_copy(str, 1, 5). En seguida se incluye un ejemplo adicional.
name = keyboard_string;
if string_length(name) > 15 )
{
keyboard_string = string_copy(name, 1, 15 );
}
El código anterior le permite al usuario introducir una cadena mediante el teclado, la cual se almacena en la variable "name". Esta cadena se revisa para determinar si excede la longitud máxima de 15 caracteres, y si esto ocurre, la variable keyboard_string se reemplaza por una copia de los primeros 15 caracteres de la variable "name". Esto limita la entrada del usuario a 15 caracteres.
string_count(substr, str);
Argumento | Descripción |
---|---|
substr | La subcadena a buscar. |
str | La cadena en dónde buscar. |
Devuelve: Real
Esta función devuelve el número de veces que la subcadena especificada aparece dentro de una cadena específica. De esta manera se puede saber cuántas veces se repite una letra o una frase en una sección de texto.
str1 = "Hello World";
ocount = string_count( "o", str1 );
El número de o's en str1 se guarda en la variable "count", en este caso 2.
string_delete(str, index, count);
Argumento | Descripción |
---|---|
str | La cadena a copiar y de la cual borrar. |
index | La posición del primer caracter a borrar. |
count | El número de caracteres a borrar. |
Devuelve: String
Esta función se usa para eliminar una sección específica de una cadena. Esto se hace especificando la cadena de entrada, y las posiciones inicial y final dentro de esa cadena para remover caracteres (el índice comienza en 1). La función devolverá una cadena nueva sin la sección.
str1 = "Helloo World";
str2 = string_delete(str1, 5, 1);
El código anterior ajusta str2 a "Hello World", al eliminar la "o" de más en la palabra "Helloo": La función cuenta 5 lugares desde la primer letra, y luego borra 1 caracter.
string_digits( str );
Argumento | Descripción |
---|---|
str | la cadena de la cual extraer los dígitos. |
Devuelve: Cadena
Esta función se usa para analizar una cadena y obtener cualquier número dentro de ella. Por ejemplo, si se teiene el texto "Tengo 18 años", mediante esta función se obtendría la cadena "18".
var t_str;
t_str = string_digits(input_str);
age = real(t_str);
Este código toma la cadena de ntrada, desecha todos los caracteres no numéricos, transforma la cadena devuelta en un número real y guarda ese valor en la variable "age".
string_format(val, tot, dec);
Argumento | Descripción |
---|---|
val | El número (tipo real) a convertir en cadena. |
tot | Cantidad total de lugares a desplegar para el número principal. Se agregarán ceros o espacios para igualar esta cantidad. |
dec | Cantidad de posiciones decimales a incluír. |
Devuelve: Cadena
Transforma un número real en una cadena usando un formato personalizado, en donde se puede escoger cuántas cifras se guardan en la cadena y cuántos lugares decimales se usan. Esto resulta útil en ciertos juegos donde se requiere desplegar un score con determinado número de dígitos o más exactitud en los decimales de la que ofrece la función string(), la cual sólo tiene dos lugares para decimales. Si el número de lugares indicados es mayor que el valor mostrado, y/o el número (contando los decimales especificados) es menor que el total de lugares especificado, se agregarán espacios en blanco antes del valor para compensar la diferencia (ver el siguiente ejemplo).
str1 = string_format(1234, 8, 0);
str2 = string_format(pi, 1, 10);
str3 = string_format(pi, 5, 5);
Esto ajusta str1 a " 1234", str2 a "3.1415926535" y str3 a " 3.14159".
string_insert(substr, str, index);
Argumento | Descripción |
---|---|
substr | la sub-cadena a insertar. |
str | La cadena a copiar (en donde se insertará la subcadena). |
index | La posición (en caracteres) en la cual insertar la sub-cadena. |
Devuelve: Cadena
Esta función sirve para crear una nueva cadena a partir de dos cadenas, en la cual una se inserta en la otra en una determinada posición. Por ejemplo, puede darse el caso de (como en muchos RPG's) tener que agregar un nombre de usuario en un texto predefinido para personalizar la experiencia de juego.
str2 = string_insert(username, "Hola, , cómo estás", 6);
Este código toma la cadena en la variable "username" y la inserta en la frase predefinida, logrando que en la cadena resultante se tenga: "Hola, NOMBRE, cómo estás".
string_length(str);
Argumento | Descripción |
---|---|
str | La cadena de la que se quiere saber el número de caracteres. |
Devuelve: Real
Esta función devuelve el número de caracteres que conforman determinada cadena. Puede resultar en casos como limitar la entrada de caracteres a determinada longitud (recortar el nombre de un jugador a 10 caracteres). Se debe tener en cuenta que esta función es distinta a string_width en que determina el número de caracteres in la cadena, no su ancho en pantalla (pixeles).
if string_length(name) > 10
{
name = string_copy(name, 1, 10);
}
Este código revisa si la longitud del nombre es mayor a 10 caracteres, y si lo es, copia y usa sólamente los 10 primeros caracteres.
string_letters(str);
Argumento | Descripción |
---|---|
str | La cadena a convertir en sólo letras. |
Devuelve: Cadena
Mediante esta función es posible remover todos los caracteres que no califican como letras del alfabeto. Esto es útil cuando se desea prevenir que el usuario introduzca caracteres no deseados, por ejemplo introducir "#" para forzar un salto de línea en GML.
username = string_letters(username);
El código anterior ajustará la variable "username" para que sólo contenga las letras de la cadena original.
string_lettersdigits(str);
Argumento | Descripción |
---|---|
str | The string to convert to letters and digits. |
Devuelve: Cadena
Esta función devuelve la copia de una cadena dada con todos sus símbolos eliminados excepto números y letras, lo que significa que puede ser usada para remover cualquier carácter indeseado, por ejemplo "#" o "?" en un nombre de usuario o una contraseña/clave.
if string_length(password) > string_length(string_lettersdigits(password))
{
draw_text(32,32,"¡Clave Invalida! ¡Solo números y letras por favor!");
}
El código de anterior verifica el tamaño de la cadena respecto al tamaño de la misma cadena, pero con todos los símbolos removidos. Si no son del mismo tamaño un mensaje se desplegara en pantalla.
string_lower( str );
Argumento | Descripción |
---|---|
str | The string to convert to lowercase. |
Devuelve: String
Con esta función puedes forzar una cadena a que contenga unicamente caracteres en minúscula.
Nota: Esta Función solo detecta los 26 caracteres del alfabeto inglés de A-Z.
str1 = "Hola, Mundo";
str2 = string_lower(str1);
Esto establecerá el valor de str2 como "hola, mundo".
string_replace(str, substr, newstr);
Argumento | Descripción |
---|---|
str | La cadena acopiar. |
substr | La sub-cadena a reemplazar. |
newstr | La nueva subcadena que reemplazará a la anterior en la cadena str. |
Devuelve: Cadena
Esta función se usa para verificar una cadena, en busca de una parte en específico, la cual puede ser reemplazada por una nueva cadena.
str1 = 'Hola Tierra';
str2 = string_replace(str1, 'Tierra', 'Mundo');
Este código ajustará str2 a str1, pero con la diferencia de que 'Tierra' es substituída por 'Mundo', resultando entonces que en str2 se tiene 'Hola Mundo'.
string_height(string);
Argumento | Descripción |
---|---|
string | La cadena de la cual medir la altura. |
Devuelve: Real
Esta función devuelve la altura (en pixeles) de la cadena de entrada. Es muy útil para calcular distancias entre elementos de texto basándose en la letra más alta dentro de la cadena, como si fuera dibujada mediante la función draw_text usando la fuente actualmente definida.
var hh;
hh = string_height("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
draw_text(32, 32, string(score));
draw_text(32, 32 + hh, string(lives);
El código anterior obtiene la altura de la cadena especificada y dibuja dos líneas de texto, usando la altura devuelta como separador.
string_height_ext(string, sep, w);
Argumento | Descripción |
---|---|
string | la cadena de la cual medir la altura. |
sep | La distancia en pixels entre líneas, tal como si la cadena estuviera dibujada en pantalla. |
w | El máximo ancho de la cadena antes de saltar a una nueva línea, como si la cadena estuviera dibujada en pantalla. |
Devuelve: Real
Esta función devuelve la altura (en pixels) de la cadena de entrada, considerando la separación entre líneas y el ancho del fin de línea. Es útil cuando se desea calcular distancias entre elementos de texto basándose en la letra más alta así como la longitud real de la cadena cuando el texto se divide en múltiples líneas, como debería aparecer desplegado al usar la función draw_text_ext usando la fuente actualmente definida. la separación y el ancho pueden ajustarse a -1 para obtener el espacio por defecto.
var hh;
hh = string_height_ext(str_Story_Text[1], -1, 100);
draw_text_ext(32, 32, str_Story_Text[1], -1, 100);
draw_text_ext(32, 32 + hh, str_Story_Text[2], -1, 100);
Éste código obtiene la altura de la cadena dada, tomando además en cuenta la separación interlineal y el ancho del fin de línea. A continuación dibuja dos líneas de texto usando la altura total devuelta como separador.
string_lower( str );
Argumento | Descripción |
---|---|
str | La cadena a convertir en minúsculas. |
Devuelve: String
Con esta función puedes forzar una cadena a que contenga unicamente caracteres en minúscula.
Nota: Esta Función solo detecta los 26 caracteres del alfabeto ingles de A-Z.
str1 = "Hola, Mundo";
str2 = string_lower(str1);
Esto establecerá el valor de str2 como "hola, mundo".
string_pos(substr, str);
Argumento | Descripción |
---|---|
substr | La sub-cadena a buscar en la cadena |
str | La cadena. |
Devuelve: Cadena
Esta función devuelve la posición de caracter para una instancia de la subcadena dentro de otra cadena, o 0 si no se encuentra ninguna. Un uso para esta función es el de filtrar palabras que se podrían considerar ofensivas, o para encontrar el lugar correcto para insertar algún texto en otra cadena.
if string_pos(",", text) != 0
{
string_insert(name, text, string_pos(",", text));
}
El código anterior busca una coma en la cadena almacenada en text, y si la encuentra entonces inserta la sub-cadena "name" en esa posición.
string_replace(str, substr, newstr);
Argumento | Descripción |
---|---|
str | La cadena acopiar. |
substr | La sub-cadena a reemplazar. |
newstr | La nueva subcadena que reemplazará a la anterior en la cadena str. |
Devuelve: Cadena
Esta función se usa para verificar una cadena, en busca de una parte en específico, la cual puede ser reemplazada por una nueva cadena.
str1 = 'Hola Tierra';
str2 = string_replace(str1, 'Tierra', 'Mundo');
Este código ajustará str2 a str1, pero con la diferencia de que 'Tierra' es substituída por 'Mundo', resultando entonces que en str2 se tiene 'Hola Mundo'.
string_replace_all(str, substr, newstr);
Argumento | Descripción |
---|---|
str | La cadena a copiar. |
substr | La sub-cadena dentro de str, la cual será reemplazada en todas sus instancias. |
newstr | La nueva sub-cadena que reemplazará al substring anterior. |
Devuelve: Cadena
Esta función se usa para analizar una cadena en busca de partes específicas, las cuales pueden ser reemplazadas por la nueva cadena que se elija en todos los lugares en donde ocurra la coincidencia.
str1 = 'Hexxo Worxd';
str2 = string_replace_all(str1, 'x', 'l');
A str2 se le asigna str1, pero con todas las instancias de 'x' reemplazadas por 'l'. El resultado es str2 como 'Hello World'.
string_repeat(str, count);
Argumento | Descripción |
---|---|
str | La cadena a Repetir. |
count | El numero de veces a repetir la cadena. |
Devuelve: Cadena
Esta función simplemente devuelve la misma cadena repetida el numero de veces indicado.
str1 = 'Hola Mundo';
str2 = string_repeat(str1, 3);
Esto establecerá el valor de str2 a 'Hola MundoHola MundoHola Mundo'.
string_upper( str );
Argumento | Descripción |
---|---|
str | La cadena a convertir en mayúsculas. |
Devuelve: String
Esta función sirve para forzar a que una cadena contenga sólo caracteres en mayúsculas.
Nota: Esta función solo funciona con las 26 letras del alfabeto inglés de A - Z.
str1 = 'Hello World';
str2 = string_upper( str1 );
Esto ajusta str2 a 'HELLO WORLD'.
string_width(string);
Argumento | Descripción |
---|---|
string | La cadena a medir. |
devuelve: Real
Esta función devuelve el ancho (en pixeles) de la cadena indicada. Resulta muy útil para calcular distancias entre elementos de texto basados en el ancho total de las letras que componen la cadena como si se dibujara con draw_text usando la tipografía actual.
var ww;
ww = string_width(str_Name + " ");
draw_text(32, 32, str_Name));
draw_text(32 + ww, 32, "has won the game!");
El código anterior obtendrá el ancho de el string dado y entonces dibujará dos líneas de texto, usando el ancho total devuelto por la función como separador.
string_width_ext(string, sep, w);
Argumento | Descripción |
---|---|
string | La cadena de la cual medir su ancho. |
sep | La distancia en pixeles entre las lineas del texto, como si la cadena se estuviera dibujando. |
w | El ancho máximo de la cadena antes de un salto de linea, como si la cadena se estuviera dibujando. |
devuelve: Real
Esta función devolverá el ancho máximo (en pixeles) de la cadena de entrada, tomando en cuenta la separación entre linea y el ancho del salto de linea. Es muy útil para calcular distancias entre elementos de texto basándose en el ancho máximo de una cadena que se divide en varias lineas, como si fuera a ser dibujada con draw_text_ext utilizando la fuente de texto definida actualmente. La separación y el ancho pueden especificarse como -1 para obtener el espaciado por defecto.
var ww;
ww = string_width_ext(str_Story_Text[1], -1, 100);
draw_text_ext(32, 32, str_Story_Text[1], -1, 100);
draw_text_ext(32 + ww, 32, str_Story_Text[2], -1, 100);
El código anterior obtendrá el ancho de la cadena dada, tomando en cuenta la separación entre lineas y el ancho del salto de linea, y luego dibujará dos lineas del texto, usando el ancho total de la cadena devuelto como un separador.
clipboard_get_text();
Esta función devuelve una cadena de texto con el contenido del portapapeles, si no hay texto en él, se devuelve una cadena vacía"".
NOTA: Esta función sólo es válida para la plataforma Windows.
if clipboard_has_text()
{
str = clipboard_get_text();
clipboard_set_text("");
}
El código anterior revisa si hay texto en el portapapeles, y de haberlo, se guarda como cadena en la variable "str". Por último, se limpia el portapapeles dándole un valor de cadena vacía.
clipboard_has_text();
Devuelve: Boleano
Esta función devuelve true si el portapapeles contiene texto o false si no.
NOTA: Esta función es sólo válida para la plataforma Windows.
if clipboard_has_text()
{
str = clipboard_get_text();
clipboard_set_text("");
}
El código anterior revisará el portapapeles en busca de texto y si contiene, lo asignara como una cadena a la variable "str". Finalmente el contenido del portapapeles es borrado asignándole una cadena vacía.
clipboard_set_text(str);
Argumento | Descripción |
---|---|
str | The text (as a cadena) to set the clipboard to hold. |
devuelve: N/A
Esta función colocará un texto definido en el portapapeles. Es posible asignarle una cadena vacía "" para efectivamente borrar el texto del portapapeles.
NOTA: Esta función es sólo válida para la plataforma Windows.
if clipboard_has_text()
{
str = clipboard_get_text();
clipboard_set_text("");
}
El código anterior revisa el portapapeles en busca de texto y de haberlo, lo asignara como una cadena a la variable "str". Finalmente el portapapeles es borrado al asignarle una cadena vacía.