2017-10-19 68 views
1

문자열 수식을 숫자와 연산자의 두 배열로 나눕니다.Java : 문자열 방정식을 숫자와 연산자로 나누기

String expr = "3/20.0"; 

String[] numbers = expr.split("[+-/\\*]"); 
String[] operators = expr.split("[^+-/\\*]+"); 

System.out.println(Arrays.toString(numbers)); 
System.out.println(Arrays.toString(operators)); 

하지만 내 코드를 출력합니다 : [3, 20, 0] [, /, .]

하지만 쉼표 연산자 배열의 앞에 왜 확실하지 않다 [3, 20.0] [, /]

을 얻으려고하지만 주로 난 그냥 원하는 20.0을 numbers 배열의 한 요소로 만들고 연산자 배열에서 소수점을 유지하십시오.

+0

FWIW 일치하는 입니다 : '+ - /'문자 클래스에서 의미하지 않는다 "+ 나 - 또는 /는 "~ 사이의 모든 문자"를 의미합니다. ASCII로 "+, -. /"로 설정됩니다. (그래서 "."와 일치합니다.) 문자 클래스에 -를 넣으려면 끝에 둡니다. –

답변

1

쉼표로 요소 파티션 만 표시됩니다.
[,은 첫 번째 요소가 비어 있음을 의미합니다.

내가 자바 분할 빈 요소를 제거 할 수 있는지 모르겠지만, [\d.]+

에 사업자 [^\d.]+
, 분할에 이러한 원시 번호는 정규식

, 분할을 시도하고 당신 ' d가 원하는 경우
수표 처리를하고 싶습니다.


노트 분리 -
[\d.]+는 일반적으로 즉, 숫자와 일치하는 클래스입니다. 'dd.dd'(잎 사업자)
[^\d.]+이 사업자 (잎 번호)

+0

와우,이 작품! 그 각각이 의미하는 바를 제게 설명해 주시겠습니까? – softboy

+0

@softboy - 좋아, 메모를 추가하려고했습니다. – sln