• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 346
  • Last Modified:

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
0
jaggernat
Asked:
jaggernat
3 Solutions
 
CEHJCommented:
You could probably split twice: first on delimiters, then on letters and numbers
0
 
Gibu GeorgeCTOCommented:
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
 
Gibu GeorgeCTOCommented:
don't forget to append a comma to the end
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
Gibu GeorgeCTOCommented:
for example if the input is

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

replaced output will be

a23,a,
0
 
hazgodukCommented:
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
 
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

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now