Click here to Skip to main content
14,428,131 members
Rate this:
Please Sign up or sign in to vote.
See more:
Hi!

I am a beginner in c#.
My question is, how can I count the number of characters in a string?
Example: in some text i need to find certain letter (how many times is that letter is showing up) using foreach loop.

Thx
Posted
Updated 18-Aug-18 1:10am
v3
Rate this:
Please Sign up or sign in to vote.

Solution 4

Why must you use a foreach loop? Since you're a beginner, here are some much more interesting solutions to look at!

string str = "abcdaab";

//Solution 1 - remove the character, and compare its length.
int result1 = str.Length - str.Replace("a", "").Length;

//Solution 2 - split the string into an array using the character as a delimiter
int result2 = str.Split('a').Length - 1;

//Solution 3 - use the LINQ 'Count' extension method
int result3 = str.ToCharArray().Count(c => c == 'a');
   
v2
Comments
Kim Togo 6-Apr-11 9:59am
   
My 5 for solution 3. Linq is a powerfull tool.
   
This one is good, especially link. Instead of "" you should better use string.Empty.
Hard-coded (immediate) constants are bad, but for the codelet maybe acceptable.
5 anyway.
--SA
Rate this:
Please Sign up or sign in to vote.

Solution 3

int count = 0;
char charToCount = 'i';
foreach (char c in string123)
{
    if( c == charToCount )
    {
        count++;
    }
}


The above code will help you find the no. of instance of a particular character, here 'i', in the string, string123.
   
v3
Comments
JOAT-MON 6-Apr-11 5:54am
   
wrapped code block
Rate this:
Please Sign up or sign in to vote.

Solution 1

try this

string abc="1234567777";
           int  k = abc.Length;


string abc = "adkjddaadtyy";
            int Count=0;
            foreach (char c in abc)
            {
                if (c == 'd')
                {
                    Count++;
                }
            }
            int k = Count;
   
v2
Rate this:
Please Sign up or sign in to vote.

Solution 2

If you're already using a foreach loop then you don't need, a priori, such a info.
e.g.:
String s = "foo abc";
int count = 0;
foreach (char c in s)
{
  count++;
}
   
v2
Comments
JOAT-MON 6-Apr-11 5:37am
   
I think OP is looking for frequency of a specific letter in the foreach, not just full count.
Syed Nasser Ahmed 19-Oct-19 10:03am
   
static void CountLetters()
{
string str = "ThisIsAWord";
char[] strChars = str.ToArray();
int[] cntr = new int[str.Length];
int i = 0;
string retString = string.Empty;

foreach (char c in str)
{
cntr[i] = countChars(c, str);
i++;
}

i = 0;

foreach (int j in cntr)
{
retString += strChars[i] + " Occurs " + j + " times" + "\n";
i++;
}

Console.WriteLine(retString);
Console.Read();
}

static int countChars(char c, string str)
{
int cntr = 0;

foreach (char cNew in str)
{
if (c == cNew) cntr++;
}

return cntr;
}

This may not be the best solution, suggestions are most welcome...

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100