2012-10-06 98 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]+$") 
相關問題