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 () 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 () below!
Agree with a comment or answer? Like () to up-vote the contribution!
I agree with you that if all we’re trying to do is get the first letter of a string, and convert it char char firstLetter = name[0]; is much more efficient. Probably, they were trying to illustrate the use of the IndexOf() method, but it might have been a better lesson if they used a letter other than the first, and named the variable something like positionOfLetter.
Maybe something like this would demonstrate the functionality of IndexOf() better:
string name = "Benjamin Franklin";
Console.WriteLine(name);
int charPosition = name.IndexOf("F");
char firstLetter = name[charPosition];
Console.WriteLine(firstLetter + " is the " + charPosition + "th letter in " + name + ".");
Agreed. This entire lesson needs to be reworked. It’s not practical, efficient, or realistic. Also, overall, I hate how the lessons require you to declare variables specifically using int, string, bool, etc instead of using var. Let C# do the work of figuring out what’s what.
I agree that this lesson needs to be reworked. I did not find the instructions clear on what exactly was I supposed to do. The coding itself is pretty easy.
IMO, I don’t recommend letting C# do an extra job, if you know the type of variable, why let C# store any type? that is a bad practice, you don’t have control what you want store/receive/send and the code will be hard to read and follow if you throw any error.
Agreed with this. char firstLetter = name[0]; is not just more efficient, but it’s better design. It makes the function usable for more than one hard-coded name.
Codecademy, please consider reworking this lesson.
Also agree. I was lost because I was trying to make it find the first letter of any input, and never even considered this was the only name to use. Why would I? Some of these lessons make learning way harder than it should be
I think the exercise intended to teach finding a character in a string, and retrieving its index. Using the first character in the string was not the best way to do it. I agree with your sentiment, but your real world case has a small error:
I found that switching the order made it make sense and provide the coveted green checkmark.
Ultimately, I am still confused by this exercise, and could not get it to print the first letter and last name without telling the code to print the F.
// Get first letter
char firstLetter = name[0];
int positionZero = name.IndexOf(“firstLetter”);
// Get last name
string name = “Farhad Hesam Abbasi”;
int charPosition = name.IndexOf(“Abbasi”);
string lastName = name.Substring(charPosition);
This lesson has confused me more than anything. It makes no sense if you’ve got multiple clients to type out code for each of them when you can just write for example, string firstCilentName = “J Netwood”; Really really bad lesson, and its done me more harm than good…
The examples used in the lesson are rather silly. However, learning how to manipulate strings is extremely valuable. The String.IndexOf(), and String.Substring() methods are important to understand. Another useful method is String.LastIndexOf(). If we refactor the code from the exercise to use the String.LastIndexOf() method we could complete the task on names that we don’t necessarily already know. For example if we had an array of names, we could do something like this:
using System;
namespace NameGrab
{
class Program
{
static void Main(string[] args)
{
// Array of names
string[] names = new string[5] {"Farhad Hesam Abbasi", "Elmer Fudd", "Buggs Rudolph Bunny", "Daffy Edgar Duck", "Porky Pig"};
//Use a for loop to access each name in the names array
for(int i = 0; i < names.Length; i++) {
string name = names[i];
// Get first letter
// The first letter is at index 0
char firstLetter = name[0];
// Get last name
// The last space in the name should precede the last name, so we use its index
int lIndex = name.LastIndexOf(" ");
// Add 1 to the index of the last space, so we start with the first letter of the last name
// and retrieve all characters from there to the end of the string
string lastName = name.Substring(lIndex + 1);
// Print results
Console.WriteLine($"{firstLetter}. {lastName}");
}
}
}
}
Thank you dude… I learned so much from just searching up what “string” did, and Im happy to see that even though I dont understand everything in your code, I can infer what they do from the surrounding code. Great reply!