2012-10-06 4 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]+$") 
관련 문제