String 클래스 문자열 메소드
문자열을 저장하기 위해 사용하는 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
|