2012-10-06 57 views
-1

我需要使用Java正则表达式进行一点刷新。使用正则表达式拆分字符串

我基本上想检测一个无效的字符串输入,如果它是有效的,我会用它做一些事情。

的数据可以是形式

New York,Los Angeles 

或只是

New York 

城市的名称变化当然的,所以可具有其它形式,例如

Orlando,West Palm 

Miami,Stuart 

Stuart 

Pompano, Satellite Beach 

所以基本上我想检测这两种类型的字符串格式

  • 任意长度的只有大写和小写字母和空格的字符串,后跟一个逗号,然后是任意长度的只有大写和小写字母和空格的其他字符串,它与逗号之间没有空格。
  • 的仅大写和小写字母
  • 任何长度的单串

可以有除了第一串中该单个逗号或者串中没有数字或标点符号。所以额外的逗号也被禁止。

这里是我试过到目前为止:

try 
{ 
    file = new Scanner(new File(f)); 
    int i = 1; 
    while(file.hasNext()) 
    { 
     String[] cities; 
     String data = file.nextLine(); 

     if(data.matches("[a-z A-Z]+,[a-z A-Z]+$")) 
     { 
      cities = data.split(","); 
      flightLog.addPath(cities[0], cities[1]); 
     } 
     else if(data.matches("[a-z A-Z]$")) 
     { 
      flightLog.addCity(data); 
     } 
     else 
      System.out.println("Line" + i + " is invalid\n"); 
     ++i; 
    } 
} 
catch (FileNotFoundException e) 
{ 
    System.out.println("File does not exist"); 
} 

}

+2

是什么?你尝试了吗? –

+0

Java标签足以说“此问题属于Java语言” –

+0

问题是什么? –

回答

1

你尝试String.split()?

"New York,Los Angeles".split(",") 
+0

我将使用它,但首先我必须确保字符串的格式正确。例如,除了那个逗号之外,字符串中不能有数字或标点符号。所以额外的逗号也被禁止。我正在处理从文件中获取的数据,因此无法进行硬编码。 – audiFanatic

+0

@ user1642677在你的问题中没有说明。首先显示一些努力,并询问你的代码中哪里有问题。所以不会为你做脏活。 –

+0

好的,我会发布我迄今为止所做的。 – audiFanatic

1

你几乎得到了它,但你需要一个正则表达式“look arounds “断言而字符串可能包含空间,空间可能不相邻的逗号。

试试这个你的第一个条件:

data.matches("^[a-z A-Z]+(?<!),(?!)[a-z A-Z]+$") 
相关问题