sm 기술 블로그
[자바] 문자열에서 사칙연산과 숫자 분리 본문
문제 제기
String s = "(5 + 5)"
다음과 같이 공백과 괄호,숫자,사칙연산이 섞여있는 문자열이 들어왔다.
1. 공백제거
들어온 문자열이 공백을 지니고 있을 가능성이있다.
때문에 공백은 제거해주고, 순수하게 문자들이 문자열을 이룰 수 있도록 해준다.
s=s.replace(" ","");
2. 연산자를 이용하여 문자와 숫자 분리
String[] operands = s.split("[0-9]");
String[] numSt = s.split("[^0-9]");
연산자 기호는 연산자 를 참고하자.
operands(연산자) 안에는 ['(', '+', ')'] 값이 들어간다.
3. 숫자는 int로 변환해 준다.
for(int i = 1; i < numSt.length;i++) {
numInt[i-1] = Integer.parseInt(numSt[i]);
}
1번부터 해주는 이유는 0번째 값에 공백이 들어간다.
따라서 정수로 변경해주는 동작을 하는 과정에서 공백을 제거하고 numInt에 집어 넣는다.
최종 결과
public class Main{
public static void main(String args[]) {
String s = "(5 + 5)";
s=s.replace(" ","");
String[] operands = s.split("[0-9]");
String[] numSt = s.split("[^0-9]");
// 연산자와 숫자를 구분해주었음.
int[] numInt = new int[numSt.length-1];
for(int i = 1; i < numSt.length;i++) {
numInt[i-1] = Integer.parseInt(numSt[i]);
}
// 1번째 부터 복사하는 이유는 맨 처음은 공백이 들어간다.
for(int i = 0; i<operands.length;i++) {
System.out.println(operands[i]);
}
for(int i = 0; i<numInt.length;i++) {
System.out.println(numInt[i]);
}
}
}
//출력결과
(
+
)
5
5
'자료구조 || 알고리즘' 카테고리의 다른 글
트리와 전위,중위,후위 순회 (0) | 2022.06.11 |
---|---|
스택(Stack)과 큐(Queue) (0) | 2022.06.11 |
브루트 포스(brute force) (0) | 2022.06.08 |
재귀함수 (0) | 2022.06.05 |
정렬 (0) | 2022.05.02 |
Comments