String
Resum
L'objecte global String
és un constructor per a strings, també conegudes com a cadenes de caràcters.
Sintaxi
Els literals de tipus Stringpoden tenir les següents formes:
'string text' "string text" "中文 español English हिन्दी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어
தமிழ்"
A més dels caràcters imprimibles normals, es poden codificar caràcters especials mitjançant la notació d'escapament:
Codi | Sortida |
---|---|
\0 |
el caràcter NUL |
\' |
cometa simple |
\" |
cometa doble |
\\ |
barra invertida |
\n |
línia nova |
\r |
retorn de carro |
\v |
barra vertical |
\t |
tabulador |
\b |
esborrar |
\f |
form feed |
\uXXXX |
caràcter amb codificació unicode |
\xXX |
caràcter amb codificació Latin-1 |
O bé utilitzant l'objecte global String
de forma directa:
String(quelcom)
new String(quelcom)
Paràmetres
quelcom
- Qualsevol cosa que serà convertida a string.
Descripció
Les Strings són útils per a emmagatzemar dades que poden ser representades en forma de texte. Algunes de les operacions més emprades en strings són per a obtindre la seva llargada length
, per a concatenar-les mitjançant els operadors de strings + i +=, per a comprovar l'existència o localització de substrings amb el mètode indexOf()
, o bé per a extreure substrings amb el mètode substring()
(en-US).
Accés als caràcters
Hi ha dues formes d'accedir a un caràcter individual emmagatzemat dins un string. El primer és el mètode charAt()
:
return 'cat'.charAt(1); // retorna "a"
L'altra forma (introduida a ECMAScript 5) és fer anar l'string com si fós un objecte de tipus array, on els caràcters individuals es corresponen a un índex numèric:
return 'cat'[1]; // retorna "a"
Utilitzar la notació de claus per a esborrar o bé assignar un valor a un caràcter no funcionarà. Les propietats involucrades no són de tipus no-escriptura i no són configurables. (Vegeu Object.defineProperty()
(en-US) per a més informació).
Comparar strings
Els desenvolupadors de C disposen de la funció strcmp()
per a comparar strings. A JavaScript senzillament es poden utilitzar els operadors major-que i menor-que (en-US)
var a = 'a';
var b = 'b';
if (a < b) { // true
print(a + ' és menor que ' + b);
} else if (a > b) {
print(a + ' és major que ' + b);
} else {
print(a + ' i ' + b + ' són iguals.');
}
Es pot obtindre un resultat similar mitjançant el mètode localeCompare()
(en-US), heredat per les instàncies de String
.
Distinció entre les primitives string i els objectes String
Cal recalcar que JavaScript distingeix entre objectes de tipus String
i valors primitius de tipus string (El mateix succeeix amb Boolean
i Numbers
Els literals de tipus string (englobats en cometes simples o dobles) així com strings retornats per crides a l'objecte String
en un contexte no constructor (és a dir, sense utilitzar la paraula clau new
(en-US)) són strings primitives. JavaScript automàticament converteix primitives a objectes String, de forma que és posible utilitzar mètodes de l'objecte String
en strings primitives. En els contextes on s'ha d'invocar un mètode en una primitiva string o es demana la una propietat, JavaScript automàticament embolcallarà la primitiva string amb un objecte String i cridarà el mètode o la propietat corresponent.
var s_prim = 'foo';
var s_obj = new String(s_prim);
console.log(typeof s_prim); // Escriu "string"
console.log(typeof s_obj); // Escriu "object"
Les primitives string i els objectes String
també donen resultats diferents a l'utilitzar eval()
(en-US). Les primitives passades a eval
són considerades codi font; els objectes String
es tracten com qualsevol altre objecte, és a dir, retornan l'objecte. Per exemple:
var s1 = '2 + 2'; // crea una primitiva string
var s2 = new String('2 + 2'); // crea un objecte String
console.log(eval(s1)); // escriu el nombre 4
console.log(eval(s2)); // escriu la string "2 + 2"
És per aquestes raons que el codi pot produïr errors quan trobi objectes String
però s'esperès una primitiva string, tot i que de forma general els autors no s'han de preocupar per la distinció.
Un objecte String
sempre es pot convertir en la seva representació primitiva mitjançant el mètode valueOf()
(en-US).
console.log(eval(s2.valueOf())); // escriu el nombre 4
StringView
— una representació de strings basada en arrays de tipatge explícit similar a C.Propietats
String.prototype
(en-US)- Permet afegir propietats a un objecte
String
.
Mètodes
String.fromCharCode()
- Retorna un string creat a partir de la seqüència de valors Unicode proporcionada.
String.fromCodePoint()
(en-US)- Retorna un string creat a partir de la seqüència de code points proporcionada.
String.raw()
(en-US)- Retorna un string creat a partir de l'string proporcionat sense tindre en compte la codificació.
Function
:Mètodes genèrics de String
Els mètodes de les instàncies de String
també estan disponibles a Firefox a partir del JavaScript 1.6 (tot i que no formen part de l'standard ECMAScript) a l'objecte String
, així es poden aplicar els mètodes de String
a qualsevol objecte:
var num = 15;
console.log(String.replace(num, /5/, '2'));
Generics també estàn disponibles als mètodes de Array
.
A continuació es mostra un shim per a donar suport als navegadors que no ho suporten:
/*globals define*/
// Assumes all supplied String instance methods already present
// (one may use shims for these if not available)
(function() {
'use strict';
var i,
// We could also build the array of methods with the following, but the
// getOwnPropertyNames() method is non-shimable:
// Object.getOwnPropertyNames(String).filter(function(methodName) {
// return typeof String[methodName] === 'function';
// });
methods = [
'quote', 'substring', 'toLowerCase', 'toUpperCase', 'charAt',
'charCodeAt', 'indexOf', 'lastIndexOf', 'startsWith', 'endsWith',
'trim', 'trimLeft', 'trimRight', 'toLocaleLowerCase',
'toLocaleUpperCase', 'localeCompare', 'match', 'search',
'replace', 'split', 'substr', 'concat', 'slice'
],
methodCount = methods.length,
assignStringGeneric = function(methodName) {
var method = String.prototype[methodName];
String[methodName] = function(arg1) {
return method.apply(arg1, Array.prototype.slice.call(arguments, 1));
};
};
for (i = 0; i < methodCount; i++) {
assignStringGeneric(methods[i]);
}
}());
Instàncies de String
Propietats
Mètodes
Mètodes no relacionats amb HTML
Mètodes d'embolcall de HTML
Exemples
Exemple: Conversió de strings
És posible utilitzar String
com a una alternativa "més segura" de toString()
, ja que tot i que normalment també crida el mètode toString()
subjacent, també funciona per a null
i undefined
. Per exemple:
var outputStrings = [];
for (var i = 0, n = inputValues.length; i < n; ++i) {
outputStrings.push(String(inputValues[i]));
}
Especificacions
Especificació | Estat | Comentari |
---|---|---|
ECMAScript 1a Edició | Standard | Definició inicial. |
ECMAScript 5.1 (ECMA-262) The definition of 'String' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'String' in that specification. |
Standard |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | 0.2 | (Yes) | (Yes) | (Yes) | (Yes) |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |