FAQ: Working with Text - Manipulate Strings

This community-built FAQ covers the “Manipulate Strings” exercise from the lesson “Working with Text”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn C#

FAQs on the exercise Manipulate Strings

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

1 Like

This was interesting while I wrote the code in, then ran the code
It marked a nice green check mark claiming that it was correct RIGHT!
WRONG, While errors was popping up on the other side. So why is that?

6 Likes

Ran into the same problem.
Don’t initialize the same variable a second time in the same scope.
WRONG:

      // Make camera directions uppercase
      string cameraDirections = cameraDirections.ToUpper();

      // Make scene description lowercase
      string sceneDescription = sceneDescription.ToLower();

Instead simply override the value of the variable.
CORRECT:

      // Make camera directions uppercase
      cameraDirections = cameraDirections.ToUpper();

      // Make scene description lowercase
      sceneDescription = sceneDescription.ToLower();

Hope that helps. :+1:

37 Likes

To be more specific, this is the error: "Program.cs(22,11): error CS0128: A local variable or function named ‘cameraDirections’ is already defined in this scope [/home/ccuser/workspace/csharp-working-with-text-manipulate-strings/e7-workspace.csproj]
Program.cs(25,11): error CS0128: A local variable or function named ‘sceneDescription’ is already defined in this scope [/home/ccuser/workspace/csharp-working-with-text-manipulate-strings/e7-workspace.csproj]

The build failed. Please fix the build errors and run again."

Am I the only one that finds it odd that there asking us to override the value of the variable yet they haven’t taught us how to do so.

9 Likes

Exactly my thoughts. I ended up having the solution being given to me instead of solving it myself. Now I’m sad.

Same problem here. Anyone else?

it might be because you are doing:

string cameraDirections = cameraDirections.ToUpper();

Do this instead:

cameraDirections = cameraDirections.ToUpper();

3 Likes

@Tera504… Well they did, you simply change the value of the variable. Thing that doesnt make sense to me is how the lesson just ends. There was no point to changing the variables, we just did it. I’d of liked for them to have us actually incorporate our work into the script at least… These last two lessons, even though theyre totally free has been a disappointment.

After completing the module, I took it the next step by assigning different names to the .ToUpper() and .ToLower() variables. Then I looked up .Replace() [somewhat intuitive] and modified the script string.

      // Make camera directions uppercase
      string cameraDirectionsUpper = cameraDirections.ToUpper();

      // Make scene description lowercase
      string sceneDescriptionLower = sceneDescription.ToLower();
      
      // Print results
      Console.WriteLine(cameraDirections);
      Console.WriteLine(sceneDescription);
      
      script = script.Replace(cameraDirections, cameraDirectionsUpper);
      script = script.Replace(sceneDescription, sceneDescriptionLower);
      
      Console.WriteLine(script);
5 Likes

nice work … it is very helpful

Hello everyone. There’s something I don’t understand about getting the scene description into a variable.
We only do :

charPosition = script.IndexOf("a portrait");
string sceneDescription = script.Substring(charPosition);

how does this allow to get the whole sentence in the variable “sceneDescription” and not just “a portrait”?

Thank you in advance.

1 Like

I have the exact same question. Can someone please provide an explanation for this?

Because your getting all characters in the string starting at the position a portrait until the end of the string.

1 Like

Thanks a lot, worked like a charm! :wink:

Actually, overwriting value is in earlier chapter. I am not sure which one but I remember it was there. You can go back to see it. Overwriting value is quite common down the line of programming.

1 Like

What is the equivalent to this:
Python:

print("hello.".title())

.
Convert it to C#.

By far the most confusing and information lacking lesson… makes me want to pull my hair out :frowning:

1 Like

I ran into dead-ends in “Manipulate Strings” and noticed the explanations there are lacking and i only understood after i comparing my code to the solution.
In “Get Parts of Strings” even after comparing to the solution i didn’t understand right away, in “Manipulate Strings” all the information was there but not clear at all, my code will help, copy paste it to see it in action.

using System;

namespace ManipulateStrings
{
  class Program
  {
    static void Main(string[] args)
    {
      
      string script = "Close on a portrait of the HANDSOME PRINCE -- as the BEAST'S giant paw slashes it.";

      int charPosition = script.IndexOf("Close");
      int length = "Close on".Length;
      string cameraDirections = script.Substring(charPosition, length);
      cameraDirections = cameraDirections.ToUpper();

      charPosition = script.IndexOf("a portrait");
      string sceneDescription = script.Substring(charPosition);
      sceneDescription = sceneDescription.ToLower();
      
      // these three lines are the solution which are not explained properly
      cameraDirections = cameraDirections.ToUpper();
      sceneDescription = sceneDescription.ToLower();
      Console.WriteLine($"{cameraDirections} {sceneDescription}");


      //  i add this part when there is nothing to print according to the tasks and its disconected so it doesn't interferes
      string test = "no errors".ToUpper();
      Console.WriteLine(test);

    }
  }
}

This and the previous lessons regarding text have left me more confused and defeated than feeling like I’m understanding more about C#. I’m also a total newbie to Python, but Python feels so much more understandable and intuitive than C#. Lessons like this one don’t help.

For one, why would I use .ToUpper() or .ToLower() to manipulate a string rather than just typing the string with upper or lower case letters? The lesson doesn’t touch on this at all. What is the practical use of this?

Considering that the previous lessons teaching how to use substrings, bracket notations, and indexing were all equally confusing, I’m just feeling frustrated and lost and like CodeCademy isn’t providing an understandable course structure here. I’d go back to Python if it weren’t for C# being more targeted towards what I want to do.