2016-10-20 10 views
1

이 문제에 대한 간단한 해결책을 간과 하겠지만 특정 형식의 Java 프로그램에서 명령 줄 인수를 구문 분석하는 방법을 개념화하는 데 문제가 있습니다.Java AlphaNumeric Parsing

"-c3"형식을 취하는 여러 명령 줄 인수를 구문 분석하려고합니다. 문자 "c"는 프로그램 내에서 특정 변수를 나타냅니다. 숫자 "3"은 "c"의 값을 나타냅니다. 여기

내가 처음에 명령 줄 인수를 구문 분석 개념화하는 방법은 다음과 같습니다

for(int i=0; i<args.length; i++){ 
     String[] parseArg = args[i].split(""); 
     switch(parseArg[2]){ //parseArg[2] is the alpha character 
      case "c" : 
       varC = parseArg[3]; //parseArg[3] is the first digit of the value, varC is the placeholder for command line variable "c" (ie "-c3") 
     } 

내가 명령 행 인수로 주어진 것입니다 모든 변수에 대해 여러 경우 문을 계속 추가 할 것입니다. 이것은 하나 이상의 숫자가있는 정수가 올바르게 분리되지 않는다는 것을 알기 전까지는 작동하는 솔루션처럼 보였습니다.

.string 메서드 및 다른 구문 분석 방법에 대한 자습서를 살펴 보았지만 다른 알파 및 숫자 문자를 기반으로 인수를 구문 분석하는 방법은 여전히 ​​명확하지 않습니다.

답변

0

정확히 어떤 것을 시도하고 싶은지 완전히 이해하지 못했지만이 솔루션이 도움이 될 것입니다. 색인은 으로 시작됩니다.

for(int i=0; i<args.length; i++){ 
    String[] parseArg = args[i].split(""); 
    int varC = 0; 
    switch(parseArg[1]) { 
     case "c" : 
      varC = Integer.parseInt(parseArg[2]); 
      break; 
    } 
} 

당신은 당신의 루프 또는 그 이전에 내부 varC를 선언해야 할 수도 있습니다.

+0

이 한 자리 정수 그러나 "-c38"와 같은 두 자릿수를 처리합니다. 또한, 나는 가지고있는 지표가 옳았다. 첫 번째 문자는 공백이며 두 번째 문자는 "-", 세 번째 문자는 "c", 네 번째 숫자는 첫 번째 숫자, 다섯 번째 숫자는 두 번째 숫자입니다. – JohnD

1

시도해보십시오.

String arg = "-c12345"; 
String[] parseArg = arg.split("(?<!...)"); 
System.out.println(Arrays.toString(parseArg)); 

결과 :

[-, c, 12345] 
+0

내가 필요한 것. 감사합니다. – JohnD