Behöver hjälp med C#! [ Sträng-Hantering ]

Permalänk

Behöver hjälp med C#! [ Sträng-Hantering ]

Hej!

Jag försöker pyssla med en uppgift i C# men nu har det tagit stop.
Uppgiften är att vi ska konvertera en variabel som innehåller strängar, t.ex:

string myString = "This is a bunch of String that we can have fun with";

till

string myString = "ThIs Is A bUnCh Of sTrInGs ... //Ja, typ så ungefär :P

Dvs. att varje för tecken som är versal så skall nästa tecken vara en gemen, och för varje gemen så ska nästa tecken vara en versal osv.

Jag tänker på det sättet att man kan hämta ut ett index-värde för varje tecken.
Om indexet uppfyller villkoret

[i] % 2 == 0

Dvs. ett jämnt delbart nummer, så kan man köra

[i] = ToUpper()

Och sedan omvänt för ett udda nummer

[i] = ToLowerr()

Dvs. alla tecken som har ett jämnt indexvärde omvandlas till en Versal och alla tecken som har ett udda indexvärde blir till en gemen.

Min kod ser ut så här:

internal static void Uppgift3E() { const string myString = "Welcome! This is my test string to test funny loops and what-not!"; char[] myCharArray = myString.ToCharArray(); for (int i = 0; i < myCharArray.Length; i++) { myCharArray[i] = (myCharArray[i] % 2 == 0) ? Char.ToUpper(myCharArray[i]) : Char.ToLower(myCharArray[i]); } Console.WriteLine(myCharArray); }

Får en output som är lite tokig Någon som vet var felet ligger? Eller är jag helt ute o cyklar med mitt tänk?

Permalänk
Medlem
Skrivet av DiAMONDBACK:

Hej!

Jag försöker pyssla med en uppgift i C# men nu har det tagit stop.
Uppgiften är att vi ska konvertera en variabel som innehåller strängar, t.ex:

string myString = "This is a bunch of String that we can have fun with";

till

string myString = "ThIs Is A bUnCh Of sTrInGs ... //Ja, typ så ungefär :P

Dvs. att varje för tecken som är versal så skall nästa tecken vara en gemen, och för varje gemen så ska nästa tecken vara en versal osv.

Jag tänker på det sättet att man kan hämta ut ett index-värde för varje tecken.
Om indexet uppfyller villkoret

[i] % 2 == 0

Dvs. ett jämnt delbart nummer, så kan man köra

[i] = ToUpper()

Och sedan omvänt för ett udda nummer

[i] = ToLowerr()

Dvs. alla tecken som har ett jämnt indexvärde omvandlas till en Versal och alla tecken som har ett udda indexvärde blir till en gemen.

Min kod ser ut så här:

internal static void Uppgift3E() { const string myString = "Welcome! This is my test string to test funny loops and what-not!"; char[] myCharArray = myString.ToCharArray(); for (int i = 0; i < myCharArray.Length; i++) { myCharArray[i] = (myCharArray[i] % 2 == 0) ? Char.ToUpper(myCharArray[i]) : Char.ToLower(myCharArray[i]); } Console.WriteLine(myCharArray); }

Får en output som är lite tokig Någon som vet var felet ligger? Eller är jag helt ute o cyklar med mitt tänk?

Kör en if-sats innuti for-loopen. Det som händer nu är att Mychararray[i] får värdet true /false.

Skickades från m.sweclockers.com

Permalänk
Skrivet av Heracl:

Kör en if-sats innuti for-loopen. Det som händer nu är att Mychararray[i] får värdet true /false.

Skickades från m.sweclockers.com

Så?

for (int i = 0; i < myCharArray.Length; i++) { if (myCharArray[i] % 2 == 0) myCharArray[i] = Char.ToUpper(myCharArray[i]); else myCharArray[i] = Char.ToLower(myCharArray[i]); }

Det ger dock exakt samma output som tidigare

Permalänk
Medlem

Du skriver ju lösningen själv

if-villkoret ska vara ([i] % 2 == 0)

och inte (myCharArray[i] % 2 == 0)

Permalänk
Medlem
Skrivet av DiAMONDBACK:

Så?

for (int i = 0; i < myCharArray.Length; i++) { if (myCharArray[i] % 2 == 0) myCharArray[i] = Char.ToUpper(myCharArray[i]); else myCharArray[i] = Char.ToLower(myCharArray[i]); }

Det ger dock exakt samma output som tidigare

Det är inget fel på din ternary-kod, och en char-array kan inte få värdet true/false... men när du säger "Får en output som är lite tokig", vad menar du då? Skriv vad du får och vad du vill ha. (Du vill antagligen köra i % 2 == 0 istället för myCharArray[i])

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av rinten:

Du skriver ju lösningen själv

if-villkoret ska vara ([i] % 2 == 0)

och inte (myCharArray[i] % 2 == 0)

Of course

Hahaha pinsamt misstag!

Permalänk
Skrivet av Teknocide:

Det är inget fel på din ternary-kod, och en char-array kan inte få värdet true/false... men när du säger "Får en output som är lite tokig", vad menar du då? Skriv vad du får och vad du vill ha.

Tokig = resultatet blir inte exakt som jag vill ha det.
OutPut:

This Is A bunCh of strinGs to test fUnnY ... //Typ så :P

Kör koden i VS så förstår du exakt vd jag menar.

Men felet är åtgärdad (se tidigare inlägg).