【发布时间】:2012-10-06 18:21:01
【问题描述】:
我需要对我的 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");
}
}
【问题讨论】:
-
你已经尝试了什么?
-
Java标签足以说明“这个问题属于Java语言”
-
没关系,我解决了。忘记在 else if 语句的正则表达式中添加“+”。
-
仅供参考,
while循环中的条件应该是file.hasNextLine(),而不是file.hasNext()。
标签: java regex string expression