Jag håller fortfarande på med RegExp, jag skulel vilja ändra alla versaler till gemener och tvärtom. Jag gör detta i javascript, den kod jag har fungerar inte riktigt. När det gäller att byta ut alla 2a" och "A" så fungerar det bra, men inte när jag försöker få gemenrer till versaler och tvärtom. Hur skriver jag för att det ska fungera? Pröva (otestat!) Inte så konstigt alls. Den andra parametern i replace ska vara en sträng (eller en funktion), alltså konverteras regexp-objektet till en sträng, och den ersätter allting som det första uttrycket hittar. Eftersom jag är väldigt ny på detta vet jag inte hur jag gör en sån funktion. Är detta helt fel? Ja, det är helt fel...Jag fattade nog inte riktigt i alla fall..;(
<code>
function replace ()
{
var myText = "Heja Jag Heter Anna";
document.write("<p>Så här ser strängen ut innan jag ändrat den.<br>" + myText + "</p>");
var myRegExp = /a/gi;
myText = myText.replace(myRegExp, "#");
document.write(myText + "<p></p>")
var myUpRegExp = /[A-Z]/g;
var myLoRegExp = /[a-z]/g;
myText = myText.replace(myUpRegExp, myLoRegExp);
document.write(myText + "<p></p>");
myText = myText.replace(myLoRegExp, myUpRegExp);
document.write(myText);
}
</code>
Problemet är att den hittar de tecken den ska, men när jag vill att den ska skriva ut motsatta skiftläget så skriver den ut uttrycket. Till exempel:
<b>H/[A-Z]/g/[A-Z]/g# J#/[A-Z]/g H/[A-Z]/g/[A-Z]/g/[A-Z]/g/[A-Z]/g #/[A-Z]/g/[A-Z]/g# </b>Sv: Jag fattade nog inte riktigt i alla fall..;(
<code>
function replace ()
{
var myText = "Heja Jag Heter Anna";
document.write("<p>Så här ser strängen ut innan jag ändrat den.<br>" + myText + "</p>");
var myRegExp = /a/gi;
myText = myText.replace(myRegExp, "#");
document.write(myText + "<p></p>")
var myUpRegExp = /[:upper:][:lower:]/g;
var myLoRegExp = /[:lower:][:upper:]/g;
myText = myText.replace(myUpRegExp, myLoRegExp);
document.write(myText + "<p></p>");
}
</code>Sv: Jag fattade nog inte riktigt i alla fall..;(
Även om kommandot hade fungerat som du trodde, så hade din kod inte gjort det. Ifall du hade en sträng som innehöll "HeJsAn", så skulle den första ersättningen omvandla det till "hejsan", och den andra ersättningen omvandla det till "HEJSAN". Du måste ersätta bägge på en gång, annars vet du inte vilka tecken som var versaler från början.
Gör en funktion som omvandlar en versal till gemen och en gemen till versal, och använd den som andra parameter i en replace.Sv:Jag fattade nog inte riktigt i alla fall..;(
<code>
function minText(minString)
{
var myLoRegExp = /[a-z]/g;
var myUpRegExp = /[A-Z]/g;
var myText2 = minString;
myText2 = myText2.replace(myLoRegExp, myUpRegExp);
return myText2;
}
</code>
Så anropar jag funktionen så här.
<code>
myText = myText.replace(myLoRegExp, minText(myText));
</code>Sv: Jag fattade nog inte riktigt i alla fall..;(
Bara för att du använder en funktion så innebär det inte att du kommer undan att du inte kan använda replace på det sättet som du försöker göra i funktionen.
Kolla om tecknet som kommer in i funktionen är versal eller gemen, och returnera det omvända.
Mönstret som du använder i replace:n måste matcha både versaler och gemener, annars kommer du ju inte att ersätta både och.