Sedax
Sedax

Reputation: 35

C# get position of a character from string

My code is this:

 string dex = "ABCD1234";
 string ch = "C";
 string ch1, ch2;
    if (dex.Contains(ch))
    {
       string n = Convert.ToChar(dex);
       MessageBox.Show(ch + "  is on " + n + " place and is between " + ch1 + " and " + ch2);
    }

I wanted to convert the string into array but i can't do it and i can't retrieve the position of the 'ch' string and what's between it.

The output should be:

MessageBox.Show("C is on 3rd place and is between B and D");

Upvotes: 1

Views: 36508

Answers (2)

Nicholas Carey
Nicholas Carey

Reputation: 74227

You might want to read the documentation on System.String and its methods and properties:

The method you want is IndexOf():

string s = "ABCD1234" ;
char   c = 'C' ;

int offset = s.IndexOf(c) ;
bool found = index >= 0 ;
if ( !found )
{
  Console.WriteLine( "string '{0}' does not contain char '{1}'" , s , c ) ;
}
else
{
  string prefix = s.Substring(0,offset) ;
  string suffix = s.Substring(offset+1) ;

  Console.WriteLine( "char '{0}' found at offset +{1} in string '{2}'." , c , offset , s ) ;
  Console.WriteLine( "The substring before it is '{0}'."             , prefix ) ;
  Console.WriteLine( "The substring following it is '{0}'."          , suffix ) ;

}

Upvotes: 3

Brandon
Brandon

Reputation: 4593

string aS = "ABCDEFGHI";
char ch = 'C';
int idx = aS.IndexOf(ch);
MessageBox.Show(string.Format("{0} is in position {1} and between {2} and {3}", ch.ToString(), idx + 1, aS[idx - 1], aS[idx + 1]));

This wont handle if your character is at position zero and some other conditions, you'll have to figure them out.

Upvotes: 8

Related Questions