티스토리 뷰

예를들어 55-50+40 이라는 문자열이 있다고 했을 때,

nums라는 int형 배열에는 숫자만 넣고

ops라는 char형 배열에는 연산자만 넣고싶다면

이런 방법을 사용할 수 있다.

 

String s = "55-50+40";

String numStr = s.replaceAll("[^0-9]", " ");
String opStr = s.replaceAll("[0-9]", " ");

StringTokenizer st = new StringTokenizer(numStr);
int[] nums = new int[st.countTokens()];
for (int i = 0; i < nums.length; i++) {
	nums[i] = Integer.parseInt(st.nextToken());
}

st = new StringTokenizer(opStr);
char[] ops = new char[st.countTokens()];
for (int i = 0; i < ops.length; i++) {
	ops[i] = st.nextToken().charAt(0);
}

 

replaceAll의 첫번째 인자는 regex (정규 표현식)이 올 수 있고 두번째 인자는 발견한 정규 표현식을 어떻게 바꿀건지 알려주는 것이다. 

[...]내부에 ^가 들어있으면 ...를 제외하라는 의미이고

[...]만 있다면 ...에 해당시키라는 의미이다.

 

위 코드대로라면 numStr에는 "55 50 40", opStr에는 " - + "가 저장되어 있을 것이다.

왜냐하면 numStr은 숫자가 아닌 것을 " "(공백1칸)으로 바꿨고,

opStr은 숫자를 " "(공백1칸)으로 바꿨기 때문이다.

 

언젠가 정규표현식에 대해서도 공부하면 좋겠다는 생각이 든다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함