validating comma seperated String

hi guys

I have a question on a string 'environments' which i need to validate.

String environments could be  a1,a2,a3,b1,b2,b3......t1,t2,t3...z1,z2,z3...z9

environments can be single or multiple
If it is single , it can be either
a1 or a2 or a3 or a4 or a5 or a6 or a7 or a8 or a9
OR
b1 or b2 or b3 or ...b9
...
...
OR
z1 or z2 or z3 or...z9



If it is multiple, it can be a combination of above values(seperated by comma). so it can be
something like

a1,a2,c1,c9,t1,t4,z1,z6..


Is there anyway i can validate that if String environments is anything other than the above format(single or multiple), show error


any help greatly appreciated

thanks
J
LVL 10
jaggernatAsked:
Who is Participating?
 
hazgodukConnect With a Mentor Commented:
If you want single letter followed by single number (i.e, a1-9, - z1-9 and not a10, a11 etc) use the first pattern to match, otherwise use the 2nd pattern
String[] split = "a1,a2,a3".split(",");
boolean allValid = true;
for(String s : split)
{
    if(!singleDigitOnly(s))
    {
        allValid = false;
        break;
    }
}
 
if(!allValid)
{
    //Do what you want to when one value doesn't match
    System.out.println("not all valid");
}
else
{
    System.out.println("all valid");
}
 
 
public boolean singleDigitOnly(String s)
{
        Matcher m = Pattern.compile("^[a-z][\\d]").matcher(s);
 
        if(s.length() == 2 && m.matches())
        {
            System.out.println(s + ": valid");
            return true;
        }
        else
        {
            System.out.println(s + ": invalid");
            return false;
        }
}
 
public boolean multipleDigits(String s)
{        
        Matcher m = Pattern.compile("^[a-z][\\d]*").matcher(s);
 
        if(m.matches())
        {
            System.out.println(s + ": valid");
            return true;
        }
        else
        {
            System.out.println(s + ": invalid");
            return false;
        }
}

Open in new window

0
 
CEHJConnect With a Mentor Commented:
You could probably split twice: first on delimiters, then on letters and numbers
0
 
Gibu GeorgeConnect With a Mentor Chief Technology OfficerCommented:
append a , to the string, use regex to match the pattern  <alphabet><numeric><comma> and then replace with empty string, check if the output string is empty

like this
String s="a1,a2,c1,c9,t1,t4,z1,z6.";
s=s.replaceAll("(([a-z])([1-9]),)*", "");
if("".equals(s)){
SOP("valid");
}
0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
Gibu GeorgeChief Technology OfficerCommented:
don't forget to append a comma to the end
0
 
Gibu GeorgeChief Technology OfficerCommented:
for example if the input is

a1,a23,ab3,b1,,b2,b3,

replaced output will be

a23,a,
0
 
jaggernatAuthor Commented:
thanks guys
sorry for the delayed response.

any help with my next question is greatly appriciated!!

thanks
http://www.experts-exchange.com/Programming/Languages/Java/Q_24443170.html
0
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.