문자열에는 문자와 숫자, 기호 등을 입력할 수 있습니다.
String 변수를 Integer로 변환하고 싶은 경우, 값에 문자가 들어가 있으면 에러가 발생합니다.
try {} catch{}로 예외 처리를 따로 작성하면 에러가 발생한 다른 처리를 하도록 할 수도 있습니다.
이번에는 정규 표현식을 사용하여 String 변수에 값이 숫자만 있을 경우 Integer 타입으로 변환하는 예제를 보도록 하겠습니다.
public class Main {
public static void main(String[] args) {
String str1 = "10";
String str2 = "abc";
String str3 = "a10b";
String str4 = "1a0b";
// 숫자 패턴 정규 표현식 설정
String regex = "^[0-9]*$";
Pattern p = Pattern.compile(regex);
// 값에 숫자만 있는지 확인
// 숫자만 있는 경우에는 TURE를 반환
Matcher m1 = p.matcher(str1);
Matcher m2 = p.matcher(str2);
Matcher m3 = p.matcher(str3);
Matcher m4 = p.matcher(str4);
// 정규식 체크 결과가 TRUE인 경우에만 Integer 타입으로 형변환
if(m1.find()) {
System.out.println(Integer.parseInt(str1));
}
if(m2.find()) {
System.out.println(Integer.valueOf(str2));
}
if(m3.find()) {
System.out.println(Integer.parseInt(str3));
}
if(m4.find()) {
System.out.println(Integer.valueOf(str4));
}
}
}
결과
10
변수 str1 에만 값이 숫자로 되어있기 때문에 str1만 Integer 타입으로 형변환을 해서 출력을 하고 있습니다.
나머지 변수에는 문자만 들어있거나 숫자와 문자가 섞여있기 때문에 정규 표현식 결과가 FALSE를 반환합니다.
단, –기호 또는 +기호를 포함한 값도 Integer 타입으로 변환하고 싶은 경우에는 정규 표현식에 -또는 + 기호를 지정해주면 됩니다.
댓글