Java の正規表現を少し変更する必要があります。
基本的に、無効な文字列入力を検出したいのですが、有効な場合は何かをします。
データは次のいずれかの形式になります。
New York,Los Angeles
あるいは単に
New York
もちろん、都市の名前はさまざまなので、次のような他の形式にすることもできます。
Orlando,West Palm
Miami,Stuart
Stuart
Pompano, Satellite Beach
基本的に、これら2種類の文字列形式を検出したい
- 大文字と小文字とスペースのみの任意の長さの文字列の後にコンマが続き、その後に大文字と小文字とスペースのみの任意の長さの別の文字列とコンマの間にスペースはありません。
- 大文字と小文字のみの任意の長さの単一文字列
最初の文字列の単一のカンマを除いて、どちらの文字列にも数字や句読点を含めることはできません。したがって、追加のコンマも禁止されています。
これが私がこれまでに試したことです:
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");
}
}