You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`\u{NNNNNNNN}`| Algunos caracteres extraños son codificados con dos símbolos unicode, utilizando hasta 4 bytes. Este unicode largo requiere llaves a su alrededor. |
81
+
| Carácter | Descripción |
82
+
|-----------|-------------|
83
+
|`\n`|Nueva línea|
84
+
|`\r`|Carriage return (retorno de carro): No se usa solo. Los archivos de texto de Windows usan una combinaión de dos caracteres `\r\n` para representar un corte de línea. |
85
+
|`\'`, `\"`|Comillas|
86
+
|`\\`|Barra invertida|
87
+
|`\t`|Tabulación|
88
+
|`\b`, `\f`, `\v`| Backspace, Form Feed, Vertical Tab -- Se mantienen por compatibilidad. No son usados actualmente |
89
+
|`\xXX`|Carácter Unicode con el hexadecimal dado `XX`, por ej. `'\x7A'` es lo mismo que `'z'`.|
|`\u{X…XXXXXX}` (1 a 6 caracteres hex)|Un símbolo unicode con el hexadecimal dado en codificación UTF-32. Algunos caracteres raros son codificados con dos símbolos unicode, tomando 4 bytes. De esta manera podemos insertar códigos largos. |
86
92
87
93
Ejemplos con unicode:
88
94
@@ -128,14 +134,13 @@ La propiedad 'length' entrega el largo del string:
128
134
alert(`Mi\n`.length); // 3
129
135
```
130
136
131
-
Notar que `\n` es un caracter "especial" único, por lo que el largo es `3`.
137
+
Notar que `\n` es un carácter "especial" único, por lo que el largo es `3`.
132
138
133
139
```warn header="`length` es una propiedad"
134
140
Gente con experiencia en otros lenguajes a veces comete el error de tipear `str.length()` en vez de `str.length`. Eso no funciona.
135
141
136
-
Por favor notar que `str.length` es una propiedad numérica, no una función. No hay necedidad de agregar un paréntesis después de ella.
137
-
138
-
````
142
+
Por favor notar que `str.length` es una propiedad numérica, no una función. No hay necesidad de agregar un paréntesis después de ella.
143
+
```
139
144
140
145
## Accediendo caracteres
141
146
@@ -144,13 +149,13 @@ Para acceder a un carácter en la posición `pos`, se debe usar paréntesis cuad
144
149
```js run
145
150
let str = `Hola`;
146
151
147
-
// el primer caracter
152
+
// el primer carácter
148
153
alert( str[0] ); // H
149
154
alert( str.charAt(0) ); // H
150
155
151
-
// el último caracter
156
+
// el último carácter
152
157
alert( str[str.length - 1] ); // a
153
-
````
158
+
```
154
159
155
160
Los corchetes son una forma moderna de acceder a los caracteres, mientras que `charAt` existe principalmente por razones históricas.
156
161
@@ -190,8 +195,10 @@ Por ejemplo:
190
195
191
196
```js run
192
197
let str ='Hola';
198
+
193
199
str ='h'+ str[1]; // reemplaza el string
194
-
alert(str); // hola
200
+
201
+
alert( str ); // hola
195
202
```
196
203
197
204
En la sección siguiente veremos más ejemplos de esto.
Existen muchas formas de buscar por subcadenas de caracteres dentro de una cadena completa.
217
224
218
-
219
225
### str.indexOf
220
226
221
-
222
227
El primer método es [str.indexOf(substr, pos)](mdn:js/String/indexOf).
223
228
224
229
Este busca un `substr` en `str`, comenzando desde la posición entregada `pos`, y retorna la posición donde es encontrada la coincidencia o `-1` en caso de no encontrar nada.
Existe también un método similar [str.lastIndexOf(substr, position)](mdn:js/String/lastIndexOf) que busca desde el final del string hasta el comienzo.
280
285
281
286
Este imprimirá las ocurrencias en orden invertido.
282
-
````
287
+
```
283
288
284
289
Existe un leve inconveniente con `indexOf` en la prueba `if`. No podemos utilizarlo en el `if` como sigue:
285
290
@@ -289,7 +294,7 @@ let str = "Widget con id";
289
294
if (str.indexOf("Widget")) {
290
295
alert("Lo encontramos"); // no funciona!
291
296
}
292
-
````
297
+
```
293
298
294
299
La `alerta` en el ejemplo anterior no se muestra ya que `str.indexOf("Widget")` retorna `0` (lo que significa que encontró el string en la posoción inicial). Correcto pero `if` considera `0` como `falso`.
295
300
@@ -305,11 +310,11 @@ if (str.indexOf("Widget") != -1) {
305
310
}
306
311
```
307
312
308
-
````smart header="El truco bitwise NOT"
313
+
#### El truco "bitwise NOT"
309
314
310
-
Uno de los trucos antiguos es el operador [bitwise NOT](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Bitwise_Operators#Bitwise_NOT)) `~`. Este convierte el número en un entero de 32-bits (elimina la parte decimal si es que existe) y luego invierte todos los bits en su representación binaria.
315
+
Uno de los antiguos trucos es el operador [bitwise NOT](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Bitwise_Operators#Bitwise_NOT)) `~`. Este convierte el número en un entero de 32-bits (elimina la parte decimal si es que existe) y luego invierte todos los bits en su representación binaria.
311
316
312
-
Para enteros de 32 bits, el llamado `~n` significa exactamente lo mismo que `-(n+1)` (debido al formato IEEE-754).
317
+
En la práctica, esto significa una simple cosa: Para enteros de 32 bits, `~n`es igual a `-(n+1)`.
313
318
314
319
Por ejemplo:
315
320
@@ -402,9 +407,10 @@ Existen 3 métodos en JavaScript para obtener un substring: `substring`, `substr
402
407
```
403
408
404
409
`str.substring(comienzo [, final])`
405
-
: Retorna la parte del string _entre_ `comienzo` y `final`.
410
+
: Devuelve la parte del string _entre_`comienzo` y `final`.
406
411
407
412
Esto es casi lo mismo que `slice`, pero permite que `comienzo` sea mayor que `final`.
413
+
408
414
Por ejemplo:
409
415
410
416
```js run
@@ -434,7 +440,6 @@ Existen 3 métodos en JavaScript para obtener un substring: `substring`, `substr
434
440
435
441
El primer argumento puede ser negativo, para contar desde el final:
436
442
437
-
438
443
```js run
439
444
let str = "strin*!*gi*/!*fy";
440
445
alert( str.substr(-4, 2) ); // gi, desde la 4ta posición toma 2 caracteres
@@ -493,6 +498,7 @@ Todos los strings son codificados usando [UTF-16](https://es.wikipedia.org/wiki/
493
498
```js run
494
499
alert( String.fromCodePoint(90) ); // Z
495
500
```
501
+
496
502
También podemos agregar caracteres unicode por sus códigos usando `\u` seguido de un código hex:
497
503
498
504
```js run
@@ -502,7 +508,6 @@ Todos los strings son codificados usando [UTF-16](https://es.wikipedia.org/wiki/
502
508
503
509
Ahora veamos los caracteres con códigos `65..220` (el alfabeto latín y unos extras) haciendo de ellos un string:
Notar que los pares sustitutos no existían en el tiempo que JavaScript fue creado, y por ello no son procesados correctamente por el lenguaje!
573
578
574
-
De hecho, tenemos un sólo símbolo en cada string más arriba, pero el `length` (largo) muestra `2`.
579
+
De hecho, tenemos un solo símbolo en cada string más arriba, pero el `length` (largo) muestra `2`.
575
580
576
581
`String.fromCodePoint` y `str.codePointAt` son algunos métodos extraños que tratan con pares sustitutos. Aparecieron recientemente en el lenguaje. Antes de ellos, existían sólo [String.fromCharCode](mdn:js/String/fromCharCode) y [str.charCodeAt](mdn:js/String/charCodeAt). Estos métodos son actualmente lo mismo que `fromCodePoint/codePointAt`, pero no funcionan con pares sustitutos.
577
582
578
-
Pero por ejemplo, obtener un símbolo puede ser dificil, ya que los pares substitutos son tratados como dos caracteres:
583
+
Obtener un símbolo puede ser dificil, ya que los pares substitutos son tratados como dos caracteres:
579
584
580
585
```js run
581
586
alert('𝒳'[0]); // símbolo extraño...
@@ -626,10 +631,12 @@ Esto proporciona una gran flexibilidad, pero también un problema interesante: d
626
631
Por ejemplo:
627
632
628
633
```js run
629
-
alert('S\u0307\u0323'); // Ṩ, S + punti arriba + punto debajo
630
-
alert('S\u0323\u0307'); // Ṩ, S + punto debajo + punto arriba
634
+
let s1 ='S\u0307\u0323'; // Ṩ, S + punti arriba + punto debajo
635
+
let s2 ='S\u0323\u0307'; // Ṩ, S + punto debajo + punto arriba
alert( s1 == s2 ); // false aunque los caracteres se ven idénticos (?!)
633
640
```
634
641
635
642
Para resolver esto, existe un algoritmo de "normalización unicode" que lleva cada cadena a la forma "normal".
@@ -669,5 +676,4 @@ Existen varios otros métodos útiles en cadenas:
669
676
-`str.repeat(n)` -- repite el string `n` veces.
670
677
- ...y más. Mira el [manual](mdn:js/String) para más detalles.
671
678
672
-
673
-
Strings también tienen métodos para buscar / reemplazar con expresiones regulares. Pero ese tema merece un capítulo separado, así que volveremos a eso más adelante.
679
+
Strings también tienen métodos con expresiones regulares para buscar/reemplazar. Pero ese tema es importante, así que es explicado en la sección <info:regular-expressions> .
0 commit comments