2012-05-11 9 views
2

사용자 입력을 수정하기위한 코드를 작성해야합니다. 입력은 중위 표현식의 수학적 표현식입니다. 정확한 계산을 위해서는 각 피연산자가 연산자에서 멀리 떨어져 있어야합니다.문자열에 한두 문자 뒤마다 공백 삽입

다음과 같은 예상되는 결과를 제공하는 방법을 작성하는 데 도움을주십시오.

예상 입력 : 13 * 21-5 + 33 예상 출력 : 13 * 21-5 + 33

연구 I 짓을 : 난 단지 문자열의 모든 문자 사이에 공백을 추가하는 방법을 찾을 수 있으며, double digit 값을 가진 표현식 계산에는 작동하지 않습니다. 즉 : 1 * 2 3 1 - 3 개 3 5 + How to insert Space after every Character of an existing String in Java?

감사

+0

나는이 사용하는 단순한 문자열 처리 메커니즘을 할 수 있지만, 여전히 나에게 코드 중 적어도 5-7 라인이 필요합니다. 누군가가 한 줄을 게시한다면 행복 할 것입니다. REGULAR EXPRESSION 솔루션 – AurA

답변

1

이 솔루션은 각각의 운전자 주위 공백을 정규화한다. 다음 공백을 둘러싸고 정규식을 사용하여 숫자에 대한

return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 "); 
+0

나는 java.lang.IndexOutOfBoundsException을 얻습니다 : 그 라인을 사용할 때 그룹 1이 없습니다. – Singh

+0

죄송합니다, parens을 잊어 버렸습니다. 편집을 참조하십시오. 또는 $ 0을 사용하고 괄호를 사용하지 마십시오. –

+0

대단히 감사합니다! 내가 얻으려고했던 원래의 기능은 사용자가 그것을 잊어 버린 경우 공백을 넣는 것이 었습니다. 사용자가 공백을 넣었는지 여부를 확인하는 가장 좋은 방법은 무엇입니까? 사용자가 그들을 추가하는 것을 잊었을 경우에만 공백을 추가해야합니다. – Singh

1

봐는 :

string.replaceAll("\\d+", " $0 ").trim(); // trim in case numbers are first/last 
+0

그냥 숫자에 대한 대답보다 더 우아합니다! – bobbel