JAVA

String 클래스 문자열 메소드

쿠키는고양이 2022. 8. 28. 15:55

 

문자열을 저장하기 위해 사용하는 String 클래스에는 문자열을 처리하기 위한 여러 메소드가 존재한다.

그 중 비교적 사용이 빈번한 메소드 12가지에 대해 정리한다.

 

1. 두 문자열 비교 equals()

같음을 '==' 연산자로 비교하면 두 문자열의 주소를 비교하게 된다.

실제 값인 문자열을 비교하기 위해서는 equals 메소드를 사용해야 비교가 가능하다.

                String str = "hi";
		String str0 = "hi";
		if(str.equals(str0)) {
			System.out.println("같습니다.");
		}
		else {
			System.out.println("다릅니다.");
		}
 

 

2. 문자열 병합하기 concat()

두 문자열을 하나의 문자열로 더해주는 메소드이다.

                String str1 = "Hello";
		String str2 = " World!";
		
		// 문자열 병합
		String str3 = str1.concat(str2);
		System.out.println(str3);
 

동일한 기능으로는 + 연산자를 사용하는 방법도 있다.

                String str4 = str1 + str2;
		System.out.println(str4);
 

실제로는 동일한 기능이기 때문에 더 간편한 + 연산자를 사용하는 것이 일반적이다.

 

3. 지정된 위치(index)의 문자를 구해주는 메소드 charAt()

문자열에서 특정 위치의 문자를 구하고 싶다면 charAt 메소드를 사용한다.

                char ch;
		String str0 = "012345";
		ch = str0.charAt(4);
		System.out.println(ch);
 

위의 코드는 4번째 인덱스에 위치한 문자를 구하는 코드이다.

4. 문자열 검사 메소드 contains()

특정 문자열로 데이터를 검색할 때 유용하게 사용할 수 있다.

boolean 형을 반환하여 찾는 문자열이 있을 경우 True, 없으면 False 를 반환한다.

                String str5 = "abdcefgh";
		boolean b = str5.contains("f");
		System.out.println(b);
 

 

5. 문자(열)을 검사하여 위치를 알려주는 메소드 indexOF()

찾은 문자열의 시작 위치를 알려준다. int를 반환하는 메소드로 찾는 문자가 있을 경우 해당 자리의 인덱스를,

없으면 -1을 리턴한다.

                String str = "abdcefgh";
		// 문자열 위치값
		int idx = str.indexOf("g");
		System.out.println(idx);
 

6. 문자열 길이를 구하는 메소드 length()

C에서 strlen() 함수와 동일한 기능을 한다.

문자열의 사이즈를 구하며 사이즈를 int형으로 반환한다.

                String str6 = "안녕!";
		int size = str6.length();
		System.out.println(size);
 

여기서 주목할 점은 실행 결과가 3으로 나온 점이다.

C 에서는 문자를 기본 1바이트로 취급하며 한글과 같은 문자는 기본 2바이트로 하여 취급하여 C에서의 결과는

안녕! 은 2(안) + 2(녕) + 1(!) 으로 총 5를 반환하지만 자바에서는 문자 기본 단위가 2바이트므로 3이 리턴된다.

 

7. 문자열 중 문자(열) 변환 메소드 replace()

특정 문자열을 검색하여 해당 위치에 새로운 문자열로 치환한다.

                String str5 = "abdcefgh";
		String str7 = str5.replace("efgh", "xyzxyzxyz");
		System.out.println(str7);
 

추가로 비슷한 메소드 중 replaceAll() 이라는 메소드도 있다.

이 메소드는 [ ] 를 사용하여 일정 수식처럼 사용이 가능하다.

자주 쓰이는 수식은 다음과 같다.

1) ^ : 비트연산에서 부정을 뜻하는 기호. "[^a]" 로 사용 시 a 가 아닌 문자를 의미한다.

2) - : 특정 범위를 나타내는 기호. "[0-9]" 로 사용 시 0~9 까지를 의미한다.

                String str8 = "a0s1d2a3s4d5a6";
		String str9 = str8.replaceAll("[^a]","A");
		System.out.println(str9);
		
		String str10 = str8.replaceAll("[0-9]","ZZ");
		System.out.println(str10);
 

 

8. 문자열 분리 메소드 split()

문자열을 나눌 기준을 정하여 문자열을 문자열 배열로 변경한다. 또한 문자열 배열로 변경되므로 문자열을 변환 후

담을 때는 문자열 배열을 선언하여 담아야 한다.

split() 메소드는 특정 문자를 변환할 때 주로 사용된다.

JSP처럼 < >을 기준으로 코드를 작성하는 언어를 예를 들면 웹에서 < >를 사용하는 실행 코드를 댓글로 입력할 경우

백엔드(서버) 에서는 문장을 수행하여 실행결과를 프론트엔드(클라이언트)에게 보내줄 수도 있다. 이럴 경우 해킹등의 문제가 발생할 위험이 크므로 split()으로 < >를 다른 특수문자로 변환하여 이같은 문제를 해결할 수 있다.

              	String str11 = "dog,cat:chicken pig";
		String[] strArr = str11.split("[:, ]");
		
                System.out.println("1번 인덱스" + strArr[1]);
		
		for(String s : strArr) {
			System.out.println(s);
		}
 

코드를 보면 replaceAll() 메소드처럼 [ ]를 사용할 수 있다.

이번 코드에서 사용한 "[:, ]"는 : 와 , 와 ' '(공백) 이 포함된 단어를 기준으로 하여 문자열 배열로 만들어 준다.

추가로 split()과 비슷한 용도로 사용하는 StringTokenizer 클래스도 있다.

아래 코드에서 동일한 문자열로 사용하여 실행 결과를 보면 동일한 기능을 수행하는 것을 알 수 있다.

둘의 차이점은 문자열을 문자열 배열로 나누는 가 에 대한 차이이므로 필요에 따라 원하는 방식을 사용하면 된다.

                String str11 = "dog,cat,chicken,pig";
		
		StringTokenizer stk = new StringTokenizer(str11);
		while(stk.hasMoreTokens()) {
			System.out.println(stk.nextToken(","));
		}
 

9. 문자열 추출 메소드 subString()

전체 문자열에서 원하는 문자열만 추출하는 용도로 사용한다.

원하는 문자열은 문자열의 인덱스를 통해 어디에서 어디까지 추출할 지 지정하게 된다.

                String str11 = "dog,cat,chicken,pig";
		String subStr1 = str11.substring(0,10);
		System.out.println(subStr1);
 

범위를 0 ~ 10 까지 지정하여 실행 결과에서는 d ~ h 까지 출력된 것을 볼 수 있다.

 

10. 공백 제거 메소드 trim()

말 그대로 공백을 제거해주는 메소드이다. 단, 문자열의 가장 앞과 맨 뒷부분의 공백만을 삭제한다.

별로 필요없을 듯 한 기능이지만 네트워크에서 문자열을 send, receive 할 경우 노이즈 등의 문제로 문자열에

공백이 추가되어 들어오는 경우가 생긴다. 이 때 원하는 문자열을 나타내기 위해 공백을 제거할 필요가 있다.

                String str12 = "      ab  cd             ";
		String str13 = str12.trim();
		System.out.println(str13);
 

11. 대소문자 변환 메소드 toLowerCase() , toUpperCase()

이름 그대로 대문자 -> 소문자 , 소문자 -> 대문자 로 변환한다.

 

String str12 = "ab  cd";
		
		String upperStr = str12.toUpperCase();
		System.out.println(upperStr);
		
		String LowerStr = str12.toLowerCase();
		System.out.println(LowerStr);
 

 

12. 기본 자료형을 문자열로 변환하는 메소드 valueOf()

형변환을 하는 메소드로 만약 1234 라는 정수가 있다면 이를 "1234" 로 변환해주는 메소드이다.

이 메소드를 대신하여 "" 을 통해 동일한 기능을 수행할 수도 있다. 결국 그냥 편한거 쓰면 된다.

                int num = 12345678;
		String str14 = String.valueOf(num);
		System.out.println(str14);
		
		String str15 = "" + num;
		System.out.println(str15);
 
 
 
메소드 명
기능
반환형
equals()
두 문자열의 값이 동일한지 확인
boolean
charAt()
특정 인덱스의 문자를 알려줌.
char
contains()
전체 문자열에서 특정 문자열을 검색
boolean
indexOF()
전체 문자열에서 특정 문자열을 찾아 시작 위치를 알려줌.
int
length()
문자열의 길이를 구함.
int
replace()
문자열에서 특정 문자로 치환
String
split()
기준에 따라 문자열을 문자열 배열로 변경
String
subString()
전체 문자열에서 원하는 범위의 문자열을 추출
String
trim()
문자열의 앞, 뒤의 공백을 제거
String
valueOf
기본 자료형을 문자열로 변환 (Statinc)
String
toLowerCase()
대문자를 소문자로 변환
String
toUpperCase()
소문자를 대문자로 변환
String