-1

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");
}

}

4

2 に答える 2

1

ほぼ完成しましたが、文字列にスペースが含まれている可能性がある一方で、スペースがコンマに隣接していない可能性があることを表明するには、正規表現の「見回す」必要があります。

あなたの最初の条件のためにこれを試してください:

data.matches("^[a-z A-Z]+(?<! ),(?! )[a-z A-Z]+$")
于 2012-10-06T19:15:21.847 に答える
1

String.split()を試しましたか?

"New York,Los Angeles".split(",")
于 2012-10-06T18:24:41.130 に答える