String y qué es un método
El texto es el tipo con el que más vas a pelear. Antes de listar sus herramientas, hay que entender qué es exactamente una «herramienta» en Apex.
✓ En esta sub-lección
- 01Explicar qué es un método y qué devuelve, sin recurrir a ejemplos.
- 02Usar los métodos de String más habituales para limpiar y componer texto.
- 03Encadenar y anidar métodos, y leer cualquier combinación paso a paso como lees una fórmula anidada.
- 04Saber por qué comparar textos con == en Apex sorprende a todo el mundo una vez.
La nutria: ¿Te acuerdas? · Repaso de la lección 2
Vas a guardar el importe de un contrato. ¿Qué tipo usas?
Si alguna vez escribiste TRIM(LastName) o UPPER(Country) en un campo fórmula, ya has usado métodos sin llamarlos así. La diferencia es de puntuación: donde la fórmula pone la función delante, Apex la pega detrás del dato.
Qué es un método
Un método es una acción con nombre que un dato sabe hacer consigo mismo. Se escribe pegado al dato con un punto, lleva paréntesis (siempre, aunque estén vacíos) y devuelve algo: un texto nuevo, un número, un sí o un no. Dentro de los paréntesis van los datos extra que necesita: trim() ninguno, replace('a', 'b') dos.
EL ORIGINAL (rawName)
- vale' acme corp '
LO QUE DEVUELVE
- valor(aún nada)
- guardado—
Paso 1 de 5
El dato. Aquí es una variable de texto, pero podría ser un campo de un registro o el resultado de otro método. Lo importante es su tipo: un String solo sabe hacer cosas de String.
Ese último detalle confunde al principio: un String es . Ningún método lo cambia por dentro; todos devuelven un texto nuevo, así que si no guardas el resultado, el trabajo se pierde.
String rawName = ' acme corp ';
rawName.trim(); // se calcula… y se tira
String cleanName = rawName.trim(); // se calcula y se guardaEscribir texto y los métodos de cada día
El texto va entre comillas simples, no dobles; si necesitas una comilla dentro, se escribe con una barra invertida delante. Para unir textos se usa el signo más, igual que en una fórmula se usa el ampersand.
String owner = 'María';
String note = 'Cuenta de ' + owner + ': Northwind'; // 'Cuenta de María: Northwind'
String quoted = 'El cliente dijo \'sí\' ayer'; // El cliente dijo 'sí' ayer| Método | Qué devuelve | Su primo en fórmulas |
|---|---|---|
| length() | Integer: cuántos caracteres. | LEN() |
| trim() | String sin espacios al principio ni al final. | TRIM() |
| toUpperCase() / toLowerCase() | String en mayúsculas o minúsculas. | UPPER() / LOWER() |
| contains('texto') | Boolean: si aparece dentro. | CONTAINS() |
| startsWith(…) / endsWith(…) | Boolean: si empieza o acaba así. | BEGINS() |
| substring(0, 3) | String: un trozo, desde una posición hasta otra. | MID() / LEFT() |
| replace('a', 'b') | String con todas las apariciones sustituidas. | SUBSTITUTE() |
| capitalize() | String con la primera letra en mayúscula; el resto se queda tal cual estaba. | Sin equivalente directo |
Encadenar: un método detrás de otro
Lo que devuelve un método es un dato nuevo, y a ese dato le puedes pedir otro método con otro punto. rawCompany.trim().substring(0, 4).toUpperCase() se lee de izquierda a derecha: cada paso actúa sobre lo que devolvió el anterior.
- ' northwind trading 'String
Paso 1 de 4
Punto de partida: el dato tal cual llega del formulario web, con espacios y en minúsculas. Una cadena se lee de izquierda a derecha.
En un campo fórmula: UPPER(LEFT(TRIM(rawCompany), 4)). Se escribe de fuera hacia dentro, pero ocurre en el mismo orden.
La nutria: Como anidar funciones en una fórmula, pero al derecho
String rawCompany = ' northwind trading ';
// Desarmada: un paso por línea, cada resultado con nombre
String trimmed = rawCompany.trim(); // 'northwind trading'
String firstFour = trimmed.substring(0, 4); // 'nort'
String code1 = firstFour.toUpperCase(); // 'NORT'
// Encadenada: los mismos tres pasos, en una línea
String code2 = rawCompany.trim().substring(0, 4).toUpperCase(); // 'NORT'String es una clase que ya trae Apex
La nutria: Como un objeto estándar
Los métodos de la clase llevan el dato dentro de los paréntesis. Dos te van a acompañar todo el curso: String.isBlank(), que funciona aunque el texto ni siquiera exista, y String.valueOf(), el TEXT() de tus fórmulas, que convierte un número o una fecha en texto.
String region = ' ';
Integer total = 42;
Boolean empty = String.isBlank(region); // true: vacío, solo espacios o null
String a = total; // ✗ no compila: 42 es un número, no un texto
String b = String.valueOf(total); // ✓ '42'
String c = 'Total: ' + total; // ✓ al pegarlo con +, Apex lo convierte soloAnidar: un método dentro de los paréntesis de otro
Una llamada a un método ES un valor, así que puede ir dentro de los paréntesis de otra. Aquí la lectura sí es de dentro hacia fuera, como en una fórmula: Apex resuelve primero lo de dentro y le pasa el resultado al de fuera.
String rawName = ' ana torres ';
String lengthText = String.valueOf(rawName.trim().length());
// primero rawName.trim().length() → 10
// después String.valueOf(10) → '10'
Boolean found = rawName.contains('TORRES'.toLowerCase()); // contains('torres') → trueLa nutria: Mi truco para leer cualquier línea
Comparar textos: la sorpresa de Apex
En Apex, == entre textos no distingue mayúsculas: 'EMEA' == 'emea' es verdadero, casi al revés que en cualquier otro lenguaje. Si la mayúscula importa, usa equals(); si quieres dejar claro que no importa, equalsIgnoreCase().
Boolean loose = 'EMEA' == 'emea'; // true
Boolean strict = 'EMEA'.equals('emea'); // false
Boolean same = 'EMEA'.equalsIgnoreCase('emea'); // true, y se lee mejor que ==La nutria: Por qué esto te suena