Ensuring an * only exists at beginning or end of string

I need to verify that a string only contains * at the beginning r end of the string.

Conatining * in teh middle o fthe string is not ok.  
so *dsjdh   would be fine
*ddd* woudl be fine
whx* woudl be fine
but g*g would not be fine..

Anyone have anyidea how I can check this...

Who is Participating?
AcumentalityConnect With a Mentor Commented:
Sorry, some typos.
bool inside = s.Substring(1, s.Length-2).Contains("*");

Open in new window


string s = "*aste*risk*";
bool inside = s.SubString(1, s.length-2).Contains("*");
//*asterisk is false, asterisk* is false, aste*risk is true, *aste*risk* is true

Open in new window

I'd probably just compare the results of a regular expression against the input string and if they match, it's good. The following example searches for an expression that allows 0 or more "*"'s the start of the string, 0 or more characters in the string, as long as they aren't "*"'s and then 0 or more "*"'s at the end.

This seems to work correctly, except as I typed this it was obvious the "or more" isn't what you want for the "*"s. There is an "exactly 1", but I assume you want to allow "zero" leading/trailing wildcards.

See the second block in the code snippet for a brute force approach.
using System.Text.RegularExpressions;
string pattern = @"^[\*]*[^\*]*[\*]*";
string search = @"*this is a * good example";
Regex regEx = new Regex(pattern);
Match match = regEx.Match(search);
if (match.Value == search)
    Console.WriteLine("Input string is good.");
    Console.WriteLine("Input string is bad.");
		string search = @"*this is* search string*";
		int i = search.IndexOf('*');
		int c = search.Length;
		bool failed = false;
		while(i < c && i != -1)
			Console.WriteLine("Found a wildcard at position {0} in a string of {1} characters.", i, c);
			if (i != 0 && i != c-1)
				failed = true;
			i = search.IndexOf('*', i+1);
		if (failed)
			Console.WriteLine("String is bad.");
			Console.WriteLine("String is good.");

Open in new window

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

For 0 or 1:

Open in new window


Open in new window

Acumentality: of course! :)
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.