我需要使用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");
}
}
答案 0 :(得分:1)
您是否尝试过String.split()?
"New York,Los Angeles".split(",")
答案 1 :(得分:1)
你差不多了,但你需要一个正则表达式“look arounds”来声明虽然字符串可能包含空格,但空格可能与逗号不相邻。
首先尝试这个条件:
data.matches("^[a-z A-Z]+(?<! ),(?! )[a-z A-Z]+$")