string.replace() problem

JavaScript

3 svar · 315 visningar · startad av petergrennanet

Medlem sedan dec. 1999258 inlägg
Trådstart#1

Detta fungerar:

var mystring = "Hello World!";
mystring = mystring.replace("!","?");

och returnerar: mystring: "Hello World?"

detta funkar INTE som det ska:

var mystring = "Hello World!";
if (mystring = mystring.replace("!","?")) {
  truevalue++;
}

Det blir alltid true, aven om inget blir replace'at.
Antar att if () bara kollar om det blir lyckat eller inte.

Hur skriver jag en battere IF case for detta?

Medlem sedan juni 200032 967 inlägg
#2

om du gör en jämförelse i javascript skall du ha två likamed tecken. alltså:

var mystring = "Hello World!";
if (mystring = mystring.replace("!","?")) {
truevalue++;
}

med ett = gör du en tilldelning.

och som if-satsen är skriven så skall den ju returnera true om ingenting ersätts.

[redigering]: ok, när man skriver två =-tecken tas det ena bort alltså. inte bra. vad är alltså problemet?[/redigering]

Medlem sedan juni 200032 967 inlägg
#3

om du gör så här då?

var mystring = "Hello World!";
var bengan; 
bengan = (mystring == mystring.replace("!","?"));

alert (bengan);

så bör den alerta false, eftersom "Hello World!" inte är samma som "Hello World?".

om du byter ut frågetecknet till ett utropstecken i parentesen så gör du ju en ersättning, men resultatet blir detsamma, och skall alltså alerta true.

wass?

Medlem sedan dec. 1999258 inlägg
#4

LOSTE DET!!!

Detta gick inte, for det returnerade true hela tiden:

var mystring = "Hello World!";
if (mystring = mystring.replace("!","?")) {
truevalue++;
}

Tydligen sa fungerar inte Javascript som PHP (gammal PHP vana).

Skit samma, sa har loste jag det till slut:

function sweToHTML (context,onoff) {
	swechars = new Array("å","Å","ä","Ä","ö","Ö");
	HTMLchars = new Array("å","Å","ä","Ä","ö","Ö");
	if (onoff < 0)
	{
		alert("\n\n\treverse order or arrays\t\n\n");
	}
		
	var limit=0;
	while (limit < 1)
	{
		limit=1;
		for (i=0; i<swechars.length; i++)
		{
			if (context.match(swechars[i]))
			{	context = context.replace(swechars[i],HTMLchars[i]); limit=0;	}
		}
	}

	return (context);
}

Som ni ser sa saknas det en liten bit koden. Kommer senare.

259 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)