본문 바로가기
프로그래밍/JAVA

초보 자바 프로그래밍(38) - 문자열 변환

by 머니테크리더 2023. 5. 2.
반응형

문자열 변환 대표 이미지
문자열 변환 대표 이미지

🔖 INDEX

     

     

    대소문자 변환

    자바에서 문자열의 대소문자를 변환하기 위해, String 클래스에서 제공하는 toUpperCase() 및 toLowerCase() 메서드를 사용할 수 있습니다. 이 두 메서드는 각각 문자열의 모든 문자를 대문자 또는 소문자로 변환한 새로운 문자열을 반환합니다.

     

    소문자로 변환하기

    toLowerCase() 메서드를 사용하여 문자열의 모든 문자를 소문자로 변환할 수 있습니다. 예를 들어:

    String input = "Hello World!";
    String lowerCaseInput = input.toLowerCase();
    System.out.println(lowerCaseInput); // 출력: hello world!

     

    대문자로 변환하기

    toUpperCase() 메서드를 사용하여 문자열의 모든 문자를 대문자로 변환할 수 있습니다. 예를 들어:

    String input = "Hello World!";
    String upperCaseInput = input.toUpperCase();
    System.out.println(upperCaseInput); // 출력: HELLO WORLD!

     

    이렇게 간단한 메서드를 사용하여 자바에서 문자열의 대소문자 변환을 쉽게 처리할 수 있습니다. 이 기능은 로그 분석, 사용자 입력 정규화, 문자열 비교 등 다양한 상황에서 유용하게 활용됩니다.

     

    배열을 이용한 대소문자 변환 예제

    위의 메서드들을 사용하지 않고 대소문자 변환을 구현하려면, 문자열을 문자 배열로 변환한 후 각 문자를 대문자 또는 소문자로 변환하고, 변환된 문자들로 새로운 문자열을 만들어야 합니다. 다음은 이를 수행하는 예제 코드입니다:

    public class Main {
        public static void main(String[] args) {
            String input = "Hello World!";
            String lowerCaseInput = toLowerCaseWithoutMethod(input);
            String upperCaseInput = toUpperCaseWithoutMethod(input);
            System.out.println(lowerCaseInput); // 출력: hello world!
            System.out.println(upperCaseInput); // 출력: HELLO WORLD!
        }
    
        // 소문자로 변환하는 메서드
        public static String toLowerCaseWithoutMethod(String input) {
            char[] chars = input.toCharArray(); // 문자열을 문자 배열로 변환
            for (int i = 0; i < chars.length; i++) {
                if (chars[i] >= 'A' && chars[i] <= 'Z') { // 문자가 대문자인 경우
                    chars[i] = (char) (chars[i] - 'A' + 'a'); // 대문자를 소문자로 변환
                }
            }
            return new String(chars); // 변환된 문자 배열로 새 문자열 생성 및 반환
        }
    
        // 대문자로 변환하는 메서드
        public static String toUpperCaseWithoutMethod(String input) {
            char[] chars = input.toCharArray(); // 문자열을 문자 배열로 변환
            for (int i = 0; i < chars.length; i++) {
                if (chars[i] >= 'a' && chars[i] <= 'z') { // 문자가 소문자인 경우
                    chars[i] = (char) (chars[i] - 'a' + 'A'); // 소문자를 대문자로 변환
                }
            }
            return new String(chars); // 변환된 문자 배열로 새 문자열 생성 및 반환
        }
    }

    위 코드에서 toLowerCaseWithoutMethod 메서드는 소문자로 변환하는 기능을 수행하며, toUpperCaseWithoutMethod 메서드는 대문자로 변환하는 기능을 수행합니다. 이때 ASCII 코드를 사용하여 대문자와 소문자 간의 차이를 계산하고 적용합니다. 이 두 메서드 모두 문자열을 문자 배열로 변환한 후, 각 문자가 대문자인지 소문자인지 확인하여 필요한 경우 변환을 수행합니다. 이렇게 변환된 문자 배열을 이용해 새로운 문자열을 생성하고 반환합니다.

     

     

    문자열을 숫자로 변환

    자바에서 문자열을 숫자로 변환하는 방법에는 여러 가지가 있습니다. 주로 Integer.parseInt(), Double.parseDouble() 등과 같은 래퍼 클래스의 메서드를 사용하거나, Integer.valueOf(), Double.valueOf() 등의 메서드를 활용해 객체를 생성할 수 있습니다.

     

    문자열을 정수로 변환

    문자열을 정수로 변환하는 방법은 다음과 같습니다.

     

    Integer.parseInt()

    Integer.parseInt() 메서드는 문자열을 매개변수로 받아 정수로 변환해줍니다. 예를 들어:

    String numberStr = "123";
    int number = Integer.parseInt(numberStr);
    System.out.println(number); // 출력: 123

    parseInt() 메서드는 문자열이 유효한 정수로 변환할 수 없는 경우 NumberFormatException을 발생시킵니다. ​

     

    Integer.valueOf()

    Integer.valueOf() 메서드는 문자열을 매개변수로 받아 Integer 객체를 생성합니다. 이후, intValue() 메서드를 사용해 int 타입의 값을 얻을 수 있습니다. 예를 들어:

    String numberStr = "123";
    Integer numberObj = Integer.valueOf(numberStr);
    int number = numberObj.intValue();
    System.out.println(number); // 출력: 123

    valueOf() 메서드 역시 문자열이 유효한 정수로 변환할 수 없는 경우 NumberFormatException을 발생시킵니다.

     

    문자열을 실수로 변환

    문자열을 실수로 변환하는 방법은 다음과 같습니다. ​

     

    Double.parseDouble()

    Double.parseDouble() 메서드는 문자열을 매개변수로 받아 실수로 변환해줍니다. 예를 들어:

    String numberStr = "123.45";
    double number = Double.parseDouble(numberStr);
    System.out.println(number); // 출력: 123.45

    parseDouble() 메서드는 문자열이 유효한 실수로 변환할 수 없는 경우 NumberFormatException을 발생시킵니다. ​

     

    Double.valueOf()

    Double.valueOf() 메서드는 문자열을 매개변수로 받아 Double 객체를 생성합니다. 이후, doubleValue() 메서드를 사용해 double 타입의 값을 얻을 수 있습니다. 예를 들어:

    String numberStr = "123.45";
    Double numberObj = Double.valueOf(numberStr);
    double number = numberObj.doubleValue();
    System.out.println(number); // 출력: 123.45

    valueOf() 메서드 역시 문자열이 유효한 실수로 변환할 수 없는 경우 NumberFormatException을 발생시킵니다. ​

     

    이 외에도 Float, Long, Short, Byte 등의 래퍼 클래스에서도 유사한 메서드를 사용하여 문자열을 해당 타입의 숫자로 변환할 수 있습니다. 문자열을 숫자로 변환할 때는 입력 문자열의 유효성 검사를 수행하고, 예외 처리를 통해 변환 과정에서 발생할 수 있는 오류를 처리하는 것이 좋습니다. ​

     

    예를 들어, Integer.parseInt() 메서드를 사용하여 문자열을 정수로 변환하는 과정에서 발생할 수 있는 예외를 처리하는 방법은 다음과 같습니다:

    String numberStr = "123a";
    try {
        int number = Integer.parseInt(numberStr);
        System.out.println(number);
    } catch (NumberFormatException e) {
        System.out.println("입력 문자열이 유효한 정수가 아닙니다.");
    }

    위 코드에서 입력 문자열 numberStr은 유효한 정수로 변환할 수 없기 때문에, Integer.parseInt() 메서드는 NumberFormatException을 발생시킵니다. 이 예외를 catch 블록에서 처리하여 사용자에게 오류 메시지를 출력합니다. ​

     

    이와 같이 문자열을 숫자로 변환할 때는 입력 문자열의 유효성 검사와 예외 처리를 통해 안정적인 프로그램을 작성할 수 있습니다. 자바의 래퍼 클래스를 활용하면 다양한 숫자 타입으로의 변환을 손쉽게 수행할 수 있으며, 이를 다양한 상황에서 활용할 수 있습니다.

     

    숫자를 문자열로 변환

    자바에서 숫자를 문자열로 변환하는 방법에는 여러 가지가 있습니다. 대표적인 방법은 String.valueOf(), Integer.toString(), Double.toString() 등의 메서드를 사용하거나, 문자열 연결 연산자(+)를 활용하는 것입니다.

     

    정수를 문자열로 변환

    정수를 문자열로 변환하는 방법은 다음과 같습니다. ​

     

    String.valueOf()

    String.valueOf() 메서드는 숫자를 매개변수로 받아 해당 숫자의 문자열 표현을 반환합니다. 예를 들어:

    int number = 123;
    String numberStr = String.valueOf(number);
    System.out.println(numberStr); // 출력: "123"

     

    Integer.toString()

    Integer.toString() 메서드는 정수를 매개변수로 받아 해당 정수의 문자열 표현을 반환합니다. 예를 들어:

    int number = 123;
    String numberStr = Integer.toString(number);
    System.out.println(numberStr); // 출력: "123"

     

    실수를 문자열로 변환

    실수를 문자열로 변환하는 방법은 다음과 같습니다.

     

    String.valueOf()

    String.valueOf() 메서드는 실수를 매개변수로 받아 해당 실수의 문자열 표현을 반환합니다. 예를 들어:

    double number = 123.45;
    String numberStr = String.valueOf(number);
    System.out.println(numberStr); // 출력: "123.45"

     

    Double.toString()

    Double.toString() 메서드는 실수를 매개변수로 받아 해당 실수의 문자열 표현을 반환합니다. 예를 들어:

    double number = 123.45;
    String numberStr = Double.toString(number);
    System.out.println(numberStr); // 출력: "123.45"

     

    문자열 연결 연산자(+)를 활용한 변환

    숫자와 빈 문자열("")을 연결하면, 자바 컴파일러는 자동으로 숫자를 문자열로 변환합니다. 예를 들어:

    int intNumber = 123;
    double doubleNumber = 123.45;
    
    String intNumberStr = "" + intNumber;
    String doubleNumberStr = "" + doubleNumber;
    
    System.out.println(intNumberStr); // 출력: "123"
    System.out.println(doubleNumberStr); // 출력: "123.45"

    이 외에도 Float, Long, Short, Byte 등의 래퍼 클래스에서도 유사한 메서드를 사용하여 해당 타입의 숫자를 문자열로 변환할 수 있습니다. 이러한 방법들을 활용하여 다양한 숫자 타입을 문자열로 변환할 수 있으며, 이를 다양한 상황에서 활용할 수 있습니다.

     

     

    숫자 포맷팅을 사용한 문자열 변환

    자바에서는 NumberFormat 클래스를 사용하여 숫자를 사용자가 원하는 형식의 문자열로 변환할 수 있습니다. 이 클래스는 숫자를 통화, 백분율 등 다양한 형태로 표현할 수 있도록 지원합니다. NumberFormat의 주요 메서드를 사용한 예시는 다음과 같습니다. ​

     

    통화 형식으로 변환

    import java.text.NumberFormat;
    import java.util.Locale;
    
    public class Main {
        public static void main(String[] args) {
            double currency = 1234.56;
            NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(Locale.US);
            String currencyStr = currencyFormatter.format(currency);
            System.out.println(currencyStr); // 출력: "$1,234.56"
        }
    }

     

    백분율 형식으로 변환

    import java.text.NumberFormat;
    
    public class Main {
        public static void main(String[] args) {
            double percentage = 0.75;
            NumberFormat percentageFormatter = NumberFormat.getPercentInstance();
            String percentageStr = percentageFormatter.format(percentage);
            System.out.println(percentageStr); // 출력: "75%"
        }
    }

     

    사용자 정의 포맷으로 변환

    DecimalFormat 클래스를 사용하여 사용자가 지정한 형식으로 숫자를 문자열로 변환할 수 있습니다. 예를 들어:

    import java.text.DecimalFormat;
    
    public class Main {
        public static void main(String[] args) {
            double number = 12345.6789;
            DecimalFormat customFormatter = new DecimalFormat("###,###.##");
            String customStr = customFormatter.format(number);
            System.out.println(customStr); // 출력: "12,345.68"
        }
    }

     

    이와 같이 자바에서는 다양한 방법으로 숫자를 문자열로 변환할 수 있습니다. 목적과 요구 사항에 따라 래퍼 클래스의 메서드, 문자열 연결 연산자, NumberFormat 클래스 등을 적절히 사용하여 원하는 형태의 문자열로 변환할 수 있습니다. 이를 다양한 상황에서 활용하여 프로그램의 유연성과 가독성을 높일 수 있습니다.

     

     

    댓글