2010-11-14 7 views
2

J'ai une chaîneUtiliser javascript remplacer pour remplacer les nombres dans une chaîne?

var x='abcdefg1234abcdefg'; 

Je veux remplacer 1234 avec 555 en utilisant la fonction x.replace() comme

x=x.replace(stuff here) 

J'ai essayé de passer '1234','555' les paramètres, mais il ne fonctionne pas.

Des indices? merci

Editer: La chaîne est dans un champ caché <input>. La valeur de c'est:

<object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="player" width="400" height="385"> 
<param name="movie" value="player.swf" /> <param name="allowfullscreen" value="true" /> 
<param name="allowscriptaccess" value="always" /> 
<param name="flashvars" value="provider=http&file=files/videos/10.file" /> 
<embed type="application/x-shockwave-flash" src="player.swf" width="400" height="385" allowscriptaccess="always" allowfullscreen="true" flashvars="provider=http&file=files/videos/10.file&image=preview.jpg"/> 
</object> 

je souhaite remplacer la valeur de la largeur et la valeur de hauteur à des valeurs stockées dans sb_width et sb_height.

+5

Pouvez-vous poster _exactly_ ce que vous avez essayé? – Oded

Répondre

7

Ce que vous avez décrit aurait travaillé:

var x = 'abcdefg1234abcdefg'; 
x = x.replace('1234', '555'); 
alert(x); // alerts abcdefg555abcdefg 

Mais notez que lorsque replace d'une chaîne ne remplacera le premier. Pour remplacer plus, utilisez une expression régulière avec le drapeau g (pour "global"):

var x = 'abcdefg1234abcdefg1234xxx'; 
x = x.replace(/1234/g, '555'); 
alert(x); // alerts abcdefg555abcdefg555xxx 

Live example

+0

oui je demande la regex, j'ai la valeur étalée sur toute la chaîne ... –

+0

Merci, ça a marché :). J'ai juste utilisé le regex à l'intérieur des doubles quotes ex "/ 1234/i" et j'ai utilisé I au lieu de G ... merci encore –

+0

@Ronan: Heureux qui a aidé, mais il n'y a pas besoin de guillemets, les regexes littérales sont bien (préféré, si n'importe quoi). –

0

code suivant fonctionne, essayé maintenant:

var bla='dfasfdas123dfasfas'; 
alert(bla.replace('123','555')); 

débogage goûtés Firebug ou équiv ? Donnez-nous l'extrait de code exact que vous essayez

0

Ok, ce n'est pas un remplacement de chaîne du tout. Vous utilisez jQuery j'espère?

$("$player").attr("width", sb_width); 
$("$player").attr("height", sb_height); 

$("$player").children("embed").attr("width", sb_width); 
$("$player").children("embed").attr("height", sb_height); 

Le remplacement de la chaîne n'est pas la solution. Vous auriez besoin de coder en dur les valeurs initiales, pourrait remplacer une chaîne similaire non intentionnelle, le code ne communique pas vraiment votre intention (changer la hauteur/largeur, ne pas manipuler les chaînes)